2011-10-17 59 views
0

我正在嘗試使用CakePHP作爲我的框架使用Facebook PHP SDK的Web應用程序。CakePHP和Facebook PHP SDK:處理任務的正確方法?

最初,我在我的控制器中提取了一堆facebook數據,但注意到Facebook API調用花費了大量時間。所以我想過使用CakePHP Shell Tasks來通過計劃的cron作業來下載facebook數據。

首先是一個普遍的問題:這是處理這種情況的正確方法嗎?和在cron作業中使用shell任務一樣。其次,目前我的邏輯連接到FB,下拉數據,保存到數據庫中都是在控制器動作中。我如何從shell任務中訪問這些操作?

最後,Facebook要求用戶登錄才能提取數據。如果我使用cron作業,用戶將如何登錄?

謝謝!

回答

1

有幾種方法可以解決此問題。

最簡單的方法可能是在用戶瀏覽您的網站時獲取數據的異步AJAX請求(當然,這需要用戶可以在不實際「離開」頁面的情況下瀏覽您的網站)。

如果你使用cron(或beanstalkd或延遲作業,嘗試Googleing它們)來延遲任務,你可能需要更多的權限在你的facebook集成中,特別是「離線訪問」功能。 "This permission makes the access token returned by our OAuth endpoint long-lived."然後,您將能夠從cake shell進行OAuth調用以檢索數據。

希望這會有所幫助!

+0

謝謝!我建立了一個蛋糕外殼和任務,並試圖讓它與我的代碼和facebook.php SDK的其餘部分一起玩,但尚未完成。我今天需要努力!話雖如此,我一直試圖遵循cakephp的MVC理念。我不太瞭解蛋糕殼/任務在哪裏落入哲學。我應該把蛋殼叫做其中一個控制器,它有從FB下拉數據的代碼?或者,shell代碼本身應該直接下拉FB數據? – kurisukun

+0

您不應該從外殼調用控制器,否。嘗試儘可能多地使用你的模型。如果需要,您甚至可以嘗試使用CakePHP的Restful/Oauth/Facebook數據源之一來使用Facebook模型。嘗試Google,社區中有很多數據源可用。祝你好運! – wrdevos

1

使用像GearMan或ZeroMQ這樣的分佈式作業服務器,它非常適合PHP。然後在收集具有offline_permission的訪問令牌後,將這些任務註冊爲GearMan或ZeroMQ中的「作業」並使用工作者腳本處理它們。它很容易從GearMan開始。

  1. http://www.masnun.me/2011/09/30/gear-up-your-php-apps-with-gearman.html

  2. http://www.masnun.me/2011/09/30/installing-and-getting-started-with-gearman.html

希望這將有助於。

+0

謝謝你!我從來沒有聽說過齒輪工。我剛剛閱讀了IBM的網頁,但我不清楚如何將它與cakephp集成。我使用的框架是否可以使用齒輪工具有所作爲? – kurisukun

相關問題