使用Beanstalkd / Gearman

时间:2015-04-27 20:34:28

标签: php performance curl gearman beanstalkd

我有一个相当大的PHP网络应用程序,通过他们的API从许多其他供应商那里获得产品,通常用大量的XML来解析。目前有20家供应商,但这将进一步上升。

我们当前的设置使用多卷曲来发出请求,这需要大约30-40秒才能完成并且太长。该脚本在后台运行,而前端轮询数据库以查找结果,然后在它们进入时显示它们。

为了改进这个过程,我们考虑使用作业服务器在后台运行,每个供应商请求都是一个单独的工作。我们已经看到了beanstalkd和Gearman被提及。

那么,我们正在朝着正确的方向寻找正确的工作服务器吗?我们正在考虑尽快进行一些促销活动,以便我们可以让200多名用户同时搜索30家供应商,因此如果我们必须进行负载平衡,正确的选择需要适当扩展。

任何建议都很好。

1 个答案:

答案 0 :(得分:0)

您可以使用Beanstalkd,因为您可以自定义作业的优先级和TTR的解析时间,默认为60秒,但对于您的方案,您必须增加它。 Beanstalkd有一个很好的admin console panel

您还应该利用多个Curl调用,因此您应该使用并行请求。为了使用Keep-alive,您还需要维护一个CURL句柄池并保持温暖。见high performance curl tips。您还需要调整Linux network stack

如果您在云中运行此功能,请确保使用多台微型计算机而不是一台重机,因为当您有多个可用资源时,吞吐量会更好。