【发布时间】:2011-08-31 17:30:37
【问题描述】:
我目前正在尝试在 php 中实现一个作业队列。然后队列将作为批处理作业处理,并且应该能够并行处理一些作业。
我已经做了一些研究并找到了几种实现方法,但我并不真正了解它们的优缺点。
例如通过fsockopen 多次调用脚本进行并行处理,如下所述:
Easy parallel processing in PHP
我发现的另一种方法是使用 curl_multi 函数。
curl_multi_exec PHP docs
但我认为这两种方式会增加相当多的开销,以便在应该主要在后台运行的队列上创建批处理?
我还阅读了有关pcntl_fork 的信息,这似乎也是一种解决问题的方法。但是,如果您真的不知道自己在做什么(就像我现在一样),那看起来会变得非常混乱。
我还查看了Gearman,但我还需要根据需要动态生成工作线程,而不是只运行几个,然后让 Gearman 作业服务器将其发送给空闲的工作线程。尤其是因为线程应该在执行完一项作业后干净地退出,以免最终发生内存泄漏(该问题中的代码可能并不完美)。
Gearman Getting Started
所以我的问题是,您如何处理 PHP 中的并行处理?你为什么选择你的方法,不同的方法可能有哪些优点/缺点?
【问题讨论】:
-
接受了 Quamis 的回答,因为这就是我现在要做的事情。其他答案也很好,将来也可能会研究他们的方法。再次感谢。
-
有关不同方法的详细讨论,请参阅stackoverflow.com/questions/209774/does-php-have-threading/…
标签: php multithreading parallel-processing task-queue