使用beanstalkd进行PHP异步处理。你推荐它吗?

时间:2009-10-23 20:20:03

标签: php beanstalkd asynchronous

你会建议使用beanstalkd [http://kr.github.com/beanstalkd/]作为

PHP中的异步处理?

我需要一些反馈/评论的利弊,来自任何使用过这个库的人。

谢谢,

1 个答案:

答案 0 :(得分:15)

我已经在生产中使用了Beanstalk,同时测试时通过它投入了数以百万计的简单消息 - 通常是大量的,但生产系统有超过100,000个任务通过它直到我离开公司。它可能仍然在运行,在这种情况下,如果他们按照我的计划进一步扩展了它的使用范围,现在将会有数千万甚至更多。

我会推荐它,因为它有很多优点。

  • 命名管可用于限制正在交付的作业。我根据机器主机名观察管道,这限制了工作人员的运行位置 - 对于仅存储在特定服务器上的上传文件很有用。“
  • 延迟可用于设置未来事件
  • 最新版本的服务器也支持bin-logging,给予持久性,虽然它从未在我身上崩溃。

我接下来的第一个任务是图像处理 - 在Apache / mod_php进程之外完成这项工作允许我调整大图像的大小而不影响服务器(吹掉Web服务器)。使用轻载的队列,它在上传后刷新页面之前创建了缩略图。

还有许多其他潜在的任务也可以异步处理。

我遇到的唯一问题是确保工人在没有事故的情况下完成工作 - 或者发现任何错误以便工作可以被“埋葬”,从而确保工作不会被重新排入队列中再次运行(并让工人再次崩溃)。

让工作人员重新启动以清除内存也很有用,因为PHP不太适合长时间运行的进程。

相关问题