我使用Laravel Queues和beanstalkd管理音频转换,由supervisord监控。
当用户上传音频文件时,它会转到触发Queue::push('AudioProcess')的Queue::push('AudioProcess'),它本身会触发exec('sh some_script.sh some_audio.mp3')来处理音频,并在完成时将应用程序音频模型状态设置为1。
我做了一堆上传测试,这是记录

1表示AudioProcess.php工作人员已被执行,0表示AudioProcess.php工作人员尚未被执行。
我想它可能来自Laravel队列管理或beanstalkd,但是我在日志中找不到任何相关的东西(laravel.log,我的主管queue.log,php_errors.log)。
我在同一台服务器上运行一个暂存和生产环境,因此有两个Laravel应用程序,因此两个php artisan queue:listen命令同时运行(每个命令都指定了--env ),如果这与我的问题有关的话。几个星期前,它运行得很好,然后我暂时放弃了这个项目,最近又重新开始了。我也做了一些apt-get update && apt-get upgrade。
为什么Laravel或beanstalkd不处理所有的工作?
发布于 2014-11-17 12:48:44
这个问题可能是因为两个php artisan queue:listen (针对每个环境)将作业发送到相同的beanstalkd队列(default)。这导致了某种冲突,但我说不出更多.
我通过让每个环境的php artisan queue:listen将作业发送到一个[environment]队列来修正它。因此,我现在有两个队列,staging和production。
如何做
app/config/[environment]/queue.php,将[connections => [beanstalkd => [queue]]]参数从default覆盖到该环境的名称。php artisan queue:listen --queue=[environment]https://stackoverflow.com/questions/26834623
复制相似问题