PHP高级作业队列

时间:2011-04-15 04:55:58

标签: php cron queue

我使用cron在一天内创建一个包含2000个作业的脚本(意味着它是服务器端并自动执行所有作业。)

但作业需要同时运行10个(或指定的作业数)作业。

就像你看到IDM(互联网下载管理器)有一个队列功能,它一次运行多个作业,如果有任何完成,它会启动另一个。我想要这样的东西..

我该怎么做?

4 个答案:

答案 0 :(得分:3)

您可以继续编写自己的自定义作业队列处理程序。为每个作业生成一个单独的进程,并继续在父进程中收集响应。上一个工作完成后重新开始新工作。

或者您也可以使用Gearman(特别是如果您有多个并行运行作业的盒子)。还可以在asynchronous-processing-with-php-one-worker-per-job

上查看此处提出的解决方案

答案 1 :(得分:2)

我不同意制作自己的作业队列处理程序。你将遇到你没有预料到的问题以及现有项目已经遇到并处理过的问题。

我会使用beanstalkd之类的东西,构建一个通用脚本来处理队列中的作业,然后生成$x个子进程来处理它们。

答案 2 :(得分:1)

还有wordpress作业队列 - 请参阅http://code.trac.wordpress.org/wiki/JobsDocs(我没有使用它,因此无法保证)

答案 3 :(得分:-1)

你最好自己编写自己的职务队列处理程序 你可以使用php ignore_user_abort并使它成为守护进程...

但是在你这样做之前,请确保你有一些控制权。