代码之家  ›  专栏  ›  技术社区  ›  Andreas

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

  •  13
  • Andreas  · 技术社区  · 16 年前

    你能推荐使用豆茎吗[ http://kr.github.com/beanstalkd/

    PHP中的异步处理?

    我需要从任何使用过这个库的人那里得到一些反馈/评论的利弊。

    谢谢,

    1 回复  |  直到 15 年前
        1
  •  15
  •   Alister Bulman    16 年前

    我在生产中使用了Beanstalk,并且在测试时通过它发送了数百万条简单的消息——通常是大量的,但是生产系统在我离开公司之前已经完成了超过100000个任务。它可能仍然在运行,在这种情况下,它将是数千万现在-或更多,如果他们延长它的使用进一步,如我所计划的。

    我会推荐它,因为它有很多优秀的分数。

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

    我完成的第一个任务是图像处理——在apache/mod_php进程之外完成这项工作可以让我在不影响服务器的情况下调整更大的图像大小(使Web服务器崩溃)。对于轻负载队列,它在上载后刷新页面之前创建了缩略图。

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

    我唯一遇到的问题是确保工人们顺利完成工作,或者发现了任何错误,这样工作就可以“埋葬”,从而确保工作不会被放回队列中重新运行(并使工人再次崩溃)。

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