Php 拨打数千个Facebook电话的最佳语言/堆栈?

Php 拨打数千个Facebook电话的最佳语言/堆栈?,php,facebook,load-balancing,Php,Facebook,Load Balancing,我正在做一个项目,每天需要进行数千次Facebook API调用。所有这些数据都需要存储在数据库中,然后基于PHP Laravel的网站可以使用该数据库。然而,我担心PHP不是实现这一点的正确语言,因为基本上我想要的是,在Facebook允许的情况下,每小时拨打尽可能多的电话,但要分散,以便负载良好且平衡 我听说过Ruby与Sidekiq的结合,但我真的不熟悉这种方法的优缺点。这就是我要找的吗?或者还有其他更适合我需要的方法吗?如果您想要“可共享性”(意味着您想要在多个进程之间平均分配负载),那

我正在做一个项目,每天需要进行数千次Facebook API调用。所有这些数据都需要存储在数据库中,然后基于PHP Laravel的网站可以使用该数据库。然而,我担心PHP不是实现这一点的正确语言,因为基本上我想要的是,在Facebook允许的情况下,每小时拨打尽可能多的电话,但要分散,以便负载良好且平衡

我听说过Ruby与Sidekiq的结合,但我真的不熟悉这种方法的优缺点。这就是我要找的吗?或者还有其他更适合我需要的方法吗?

如果您想要“可共享性”(意味着您想要在多个进程之间平均分配负载),那么PHP实际上可能是错误的语言。但是,我想,这取决于你试图处理的电话数量和复杂程度

我为类似的任务寻找了一个解决方案

  • NGINX作为负载平衡器(用于传入的实时更新)
  • NodeJS作为“应用服务器”
  • RabbitMQ作为消息队列
  • Redis/MongoDB作为持久性/缓存层

使用NodeJS和MongoDB作为组件的好处在于,它们都可以以本地方式处理来自graphapi的JSON结果,这意味着您不必在使用/存储JSON数据之前以任何方式转换JSON数据。这是一个很好的速度点,由于NodeJS事件循环的异步性质,您可能能够处理比使用PHP进程多得多的负载。

我认为更改您的语言不会有帮助。在我看来,您可能希望避免在web请求中进行调用,以保持应用程序的快速运行,因此只需将调用添加到队列中,并在后台处理它们。您可以在cron上执行此操作(每X分钟执行Y次调用)或将它们添加到工作队列(例如Gearman),并确保它们的速率有限。我仍然认为PHP不是正确的方法。据我所知,PHP主要是一种Web开发语言,而其他语言则更通用。但是如果我错了,请纠正我。我想你搬家的理由是错误的。似乎你会离开一种你知道的语言而去使用一种你不知道的语言,这涉及到一种你“听说过”的技术。正如我已经指出的,PHP可以处理它。但是,这是你的决定。在我看来,坚持你所知道的并不总是最好的方法。如果有更好的替代方案,我认为改进代码是值得的,而不是满足于“我知道”的东西。此外,我甚至不确定我们是否要自己编写代码。也许我们会雇佣更有经验的人。我只希望客户拥有最好、最有效的代码,我不会满足于更少的代码。但无论如何,谢谢你的评论,它们很有帮助+1对于Node.JS和MongoDB:)客户的预测是,该项目每天可能有500.000个请求。然后应该在多个服务器上分发(否则Facebook会发疯),但原则不变。非常感谢您的建议,我们一定会调查的!不客气。请记住,FB主要限制应用程序级别,而不是IP地址。请参见第11条,但是可以创建多个应用程序,并让它们都写入同一个数据库,对吗?当然可以,但您编写的内容并不表示您将达到
5M MAU、每天100M API调用或每天5000万次印象的限制。您知道有专门为您的用例构建的商业软件吗?如果你不想重新发明轮子。。。