13

你会推荐使用 beanstalkd [ http://kr.github.com/beanstalkd/ ]

PHP中的异步处理?

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

谢谢,

4

1 回答 1

15

我在生产中使用过 Beanstalk,并且在测试时通过它抛出了数百万条简单的消息——通常是大量的,但是在我离开公司之前,生产系统已经完成了超过 100,000 个任务。它可能仍在运行,在这种情况下,现在将达到数千万——或者更多,如果他们按照我的计划进一步扩大了它的使用范围。

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

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

我完成的第一项任务是图像处理——在 Apache/mod_php 进程之外进行这项工作使我能够调整更大的图像而不影响服务器(炸毁网络服务器)。对于轻载队列,它在上传后刷新页面之前创建了缩略图。

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

我曾经遇到的唯一问题是确保工作人员顺利完成 - 或者任何错误都被捕获以便可以“隐藏”作业,从而确保作业不会被放回队列以再次运行(并让工人再次崩溃)。

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

于 2009-10-23T22:23:25.193 回答