如何使用php运行多个beanstalk worker

如何使用php运行多个beanstalk worker,php,beanstalkd,Php,Beanstalkd,到目前为止,我的项目只运行一个beanstalk worker线程,它处理基于cron的作业和实时作业。所以,我想把它分成两个工人。一个worker用于跟踪基于cron的作业,另一个worker用于跟踪实时异步作业。这样,工人的工作效率就会得到提高。任何人都可以帮我 如何使用php运行多个beanstalk Worker并对其进行取消监视 处理多个beanstalk工作程序的示例脚本 注意:目前我正在使用pheanstalk php库。与pheanstalk(或其他库)一起使用,如果您想接受来自

到目前为止,我的项目只运行一个beanstalk worker线程,它处理基于cron的作业和实时作业。所以,我想把它分成两个工人。一个worker用于跟踪基于cron的作业,另一个worker用于跟踪实时异步作业。这样,工人的工作效率就会得到提高。任何人都可以帮我

  • 如何使用php运行多个beanstalk Worker并对其进行取消监视
  • 处理多个beanstalk工作程序的示例脚本
  • 注意:目前我正在使用pheanstalk php库。

    与pheanstalk(或其他库)一起使用,如果您想接受来自多个队列的作业,只需观察它们即可

    $pheanstalk->watch('testtube')
               ->watch('tube2')
               ->watch('tube3');
    $pheanstalk->reserve();  // get the next job from any of the tubes (+ 'default')
    
    至于处理工作人员,我目前正在使用一些非常类似的脚本,我希望继续运行这些脚本。它是一个基于python的守护进程,您要运行的脚本列在一个非常简单的配置文件中。(添加更多工人实际上就是更改单个数字,并重新加载配置)


    我做的一件事是基于博客文章。Supervisord运行一个shell脚本。该脚本运行PHP,然后返回一个值(带有
    exit($x)
    )。如果我从队列运行程序(例如)99返回一个值,我将退出shell脚本以关闭worker。另一个值可能会立即重新启动worker,其他任何值都会在重新启动之前休眠几秒钟。

    以及如何监视多个管?上面的监视多个管的示例很好。但是上面的脚本说,它应该在单个辅助脚本中监视多个管道。假设如果一个用户想要重新启动一个特定的管道,我如何重新启动一个特定的管道?我如何分别管理每一根管子?。我们是否需要为每根管子编写辅助脚本?如果是,那么多个工作人员的启动脚本呢?如何在init.d中管理多个工作脚本?您所说的重新启动tube是什么意思?您希望同一个脚本运行多次,以监视单个管道,例如,然后启动多个辅助程序,并可能在命令行上传递管道名称以监视。我的意思是,假设我在单个辅助程序中运行4个管道,其中一个管道在运行异步作业时出现问题。例如,基于时间的作业。在这种情况下,如何停止和启动特定的管道?但我从你最后的评论中得到了一个想法。如果你能简单地给我解释一下,那就好了。我想工人和管子之间可能会有一些混淆。管子不会“运行”任何东西——它只是一个队列,在队列的一端推送数据块,另一端由工作人员拉出数据块。是工人们将数据提取出来并进行处理。您可以在工作者和您喜欢的管之间建立任何关系:工作者观看一个管或多个管;由一个或多个工人看管的管子。