Php 为什么拉威尔或豆茎会跳槽?
我正在使用Laravel队列和beanstalkd管理音频转换,由supervisord监控 当用户上传音频文件时,它会进入Php 为什么拉威尔或豆茎会跳槽?,php,laravel,supervisord,beanstalkd,Php,Laravel,Supervisord,Beanstalkd,我正在使用Laravel队列和beanstalkd管理音频转换,由supervisord监控 当用户上传音频文件时,它会进入AudioController.php,触发一个队列::push('AudioProcess'),它本身会触发一个exec('sh some_script.sh some_audio.mp3')来处理音频,并在完成后将应用程序音频模型状态设置为1 我上传了很多测试,下面是记录 1表示已执行AudioProcess.php工作进程,0表示未执行AudioProcess.ph
AudioController.php
,触发一个队列::push('AudioProcess')
,它本身会触发一个exec('sh some_script.sh some_audio.mp3')
来处理音频,并在完成后将应用程序音频模型状态设置为1
我上传了很多测试,下面是记录
1
表示已执行AudioProcess.php
工作进程,0
表示未执行AudioProcess.php
工作进程
我猜它可能来自Laravel队列管理或beanstalkd,但我在日志中找不到任何相关内容(Laravel.log
,我的主管queue.log
,php\u errors.log
)
我在同一台服务器上运行一个登台和一个生产环境,因此有两个Laravel应用程序,因此有两个php artisan queue:listen
命令同时运行(每个命令都指定了--env
),如果它与我的问题有关的话。它在几周前运行良好,然后我放弃了该项目一段时间,最近又重新考虑了它。我也做了一些apt-get-update&&apt-get-upgrade
为什么Laravel或beanstalkd没有处理所有作业?发生此问题的原因可能是两个
php artisan队列:listen
(对于每个环境)正在将作业发送到同一beanstalkd队列(默认值
)。这导致了一些冲突,但我不能说更多
我通过使每个环境的php artisan队列:listen
将作业发送到[environment]
队列来修复它。因此,我现在有两个队列,staging
和production
如何做
- 创建一个覆盖
默认值中的参数 以该环境的名称命名[connections=>[beanstalkd=>[queue]]
- 指定要访问的队列的名称
Artisan:
php Artisan队列:侦听--queue=[environment]
php artisan queue:listen--env=[…]
forstaging
和production
)正在运行。问题来自Laravel队列或beanstalkd,它们不能完成所有作业。无论如何,这对你很有用,这里是关于supervisorORD
和php
的ps afx的和。我在你的supervisor配置文件中没有找到任何[program]
部分。另外,您是否使用终端/命令提示符下的add
命令添加了流程?请参阅暂存配置(第二个链接)。是的,它已正确添加,并且正在运行,正如您在ps afx
转储中所看到的。谢谢,这让我失去了理智!我在同一台服务器上有三个站点,作业被错误的队列接收