我正在使用Laravel Horizon来处理排队的作业。下面是我的代码
<?php
namespace App\Jobs;
class ProcessPodcast implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $podcast;
public function handle(AudioProcessor $processor)
{
// Process uploaded podcast...
Log::channel('slack')->send('Processing ...');
}
}
在作业处理方法中,我已登录到松弛通道。当执行这种排队的作业时,我得到了松弛的消息。
有时候,我说从1%到5%,当我分配工作ProcessPodcast::dispatch()
时,我没有收到闲暇消息。而且我没有在“地平线失败的工作”页面下显示该工作。这种行为是完全随机的。很难复制。我在想:
案例1:Laravel没有创建作业,因此,没有作业被执行
案例2:Laravel创建了作业,但Horizon没有运行该作业
无论哪种情况,检查作业ProcessPodcast
是否保存到Redis都会非常有帮助。我认为Redis无法做到这一点。
请提供有关如何调试此问题的建议。