【问题标题】:PHP Advance Job QueuePHP 高级作业队列
【发布时间】:2011-08-06 01:33:07
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

    标签: php cron queue


    【解决方案1】:

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

    或者,您也可以深入研究使用Gearman(特别是如果您有多个盒子并行运行作业)。也可以在asynchronous-processing-with-php-one-worker-per-job查看这里提出的解决方案

    【讨论】:

    • 顺便说一句,我已经编写了自己的作业管理器/队列,这很好,但不能很好地处理多个服务器。现在我使用的是 gearman。
    • 我是 PHP 新手,我不知道如何制作 php 作业处理程序。如果能提供更多关于如何制作它的帮助或任何教程链接也不知道你的 Gearman 如何使用它,我将不胜感激。
    • 在编写跨集群处理作业的作业处理器和管理器时,php 不是首选语言。gearman 应该是您的首选,您应该只使用 php 来指导它。 ...我同意尼克的观点,将来您将很快面临使用自己的自定义解决方案的未知和意外问题,如果您选择 php 来完成此类任务。
    【解决方案2】:

    我不同意创建自己的作业队列处理程序。您将遇到出乎意料的问题,而现有项目已经遇到并处理了这些问题。

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

    【讨论】:

      【解决方案3】:

      还有 wordpress 作业队列 - 见 http://code.trac.wordpress.org/wiki/JobsDocs(我没用过,所以不能保证)

      【讨论】:

        【解决方案4】:

        您最好编写自己的作业队列处理程序。
        你可以让 php ignore_user_abort 也让它成为一个守护进程......

        但在你这样做之前,请确保你对它有一定的控制权。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多