首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Laravel或Beanstalkd要跳槽?

为什么Laravel或Beanstalkd要跳槽?
EN

Stack Overflow用户
提问于 2014-11-09 23:37:02
回答 1查看 1.4K关注 0票数 5

我使用Laravel Queuesbeanstalkd管理音频转换,由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.logphp_errors.log)。

我在同一台服务器上运行一个暂存和生产环境,因此有两个Laravel应用程序,因此两个php artisan queue:listen命令同时运行(每个命令都指定了--env ),如果这与我的问题有关的话。几个星期前,它运行得很好,然后我暂时放弃了这个项目,最近又重新开始了。我也做了一些apt-get update && apt-get upgrade

为什么Laravel或beanstalkd不处理所有的工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 12:48:44

这个问题可能是因为两个php artisan queue:listen (针对每个环境)将作业发送到相同的beanstalkd队列(default)。这导致了某种冲突,但我说不出更多.

我通过让每个环境的php artisan queue:listen将作业发送到一个[environment]队列来修正它。因此,我现在有两个队列,stagingproduction

如何做

  • 创建一个app/config/[environment]/queue.php,将[connections => [beanstalkd => [queue]]]参数从default覆盖到该环境的名称。
  • 将队列名称指定给Artisan:php artisan queue:listen --queue=[environment]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26834623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档