Laravel队列随机不调度
我试图从控制器分派作业,但有时队列有效,有时它会立即执行代码。另一方面,从命令调度工作正常,所以我想知道有什么区别。
我尝试过的事情:
- 我尝试了数据库和 Redis 连接,但两个连接都出现了问题
- 不运行队列监听/工作,作业会随机执行,所以监听/工作不会是问题
- 检查网络服务器/PHP 日志是否有错误,没有结果
- 在静态调度函数之前出现问题。当我在静态调度函数中放入一个die时,它有时会杀死应用程序,有时它仍然会立即在句柄中运行解码....
供应商/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php
public static function dispatch()
{
die('xxx');
return new PendingDispatch(new static(...func_get_args()));
}
我试图找到在调度函数之前发生的事情,但是我找不到在静态句柄函数之前执行的任何函数。我感觉有些东西在 PHP 中崩溃了,或者立即执行作业,但我找不到核心中发生这种情况的地方。
控制器
class CreateTestJob
{
public function __invoke(Request $request)
{
TestJob::dispatch(rand(0, 999999));
}
}
工作
class TestJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct($test)
{
$this->test = $test;
}
public function handle()
{
sleep(30);
echo 'done';
}
}
我还尝试在 TestJob 的 de handle 函数中创建语法错误,以便我可以看到堆栈跟踪,但它显示“1 个未知帧”。我想知道那是什么