CakePHP和Facebook PHP SDK:处理任务的正确方式?

CakePHP和Facebook PHP SDK:处理任务的正确方式?,php,facebook,cakephp,task,Php,Facebook,Cakephp,Task,我正在尝试开发一个web应用程序,它使用FacebookPHPSDK和CakePHP作为我的框架 最初,我在控制器中提取了大量facebook数据,但注意到facebook API调用需要很多时间。因此,我考虑使用cakePHP Shell任务,以便通过预定的cron作业提取facebook数据 首先是一个普遍的问题:这是处理这种情况的正确方法吗?与中一样,在cron作业中使用shell任务 其次,目前我的逻辑连接到FB,下拉数据,保存到db都在控制器的行动。如何从shell任务访问这些操作 最

我正在尝试开发一个web应用程序,它使用FacebookPHPSDK和CakePHP作为我的框架

最初,我在控制器中提取了大量facebook数据,但注意到facebook API调用需要很多时间。因此,我考虑使用cakePHP Shell任务,以便通过预定的cron作业提取facebook数据

首先是一个普遍的问题:这是处理这种情况的正确方法吗?与中一样,在cron作业中使用shell任务

其次,目前我的逻辑连接到FB,下拉数据,保存到db都在控制器的行动。如何从shell任务访问这些操作

最后,Facebook要求用户登录才能获取数据。如果我使用cron作业,用户将如何登录


谢谢大家!

有几种方法可以解决这个问题

最简单的方法可能是在用户浏览您的站点时发出异步AJAX请求以获取数据(这当然要求用户可以在不实际“离开”页面的情况下浏览您的站点)

如果你想用cron(或beanstalkd,或延迟的作业)执行延迟的任务,你可能需要在你的facebook集成中获得更多特权,特别是“离线访问”功能。然后,您将能够从蛋糕外壳调用OAuth来检索数据


希望这有帮助

使用像GearMan或ZeroMQ这样的分布式作业服务器,它与PHP配合得非常好。然后在收集具有脱机_权限的访问令牌后,将这些任务注册为GearMan或ZeroMQ中的“作业”,并使用工作脚本处理它们。从GearMan开始很容易


  • 希望这会有帮助

    谢谢大家!!我已经设置了一个蛋糕外壳和任务,并试图让它很好地与我的代码和facebook.php SDK的其余部分配合使用,但还没有完全做到。我今天要做这件事!话虽如此,我一直在努力遵循cakephp的MVC理念。我真的不明白蛋糕壳/任务属于什么哲学。我是否应该让蛋糕外壳调用其中一个控制器,该控制器具有从FB下拉数据的代码?或者外壳代码本身应该直接下拉FB数据吗?你不应该从外壳调用控制器,不。尝试对你的模型做尽可能多的操作。如果您愿意,您甚至可以尝试CakePHP的Restful/Oauth/Facebook数据源之一来使用Facebook模型。试试谷歌,社区里有很多可用的数据源。祝你好运非常感谢。我从来没有听说过gearman。我刚刚阅读了IBM关于这方面的页面,但还不清楚如何将其与cakephp集成。我正在使用的框架是否会影响我是否可以使用gearman?