我试图从控制器分派作业,但有时队列有效,有时它会立即执行代码。另一方面,从命令调度工作正常,所以我想知道有什么区别。
我尝试过的事情:
供应商/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php
public static function dispatch()
{
die('xxx');
return new PendingDispatch(new static(...func_get_args()));
}
Run Code Online (Sandbox Code Playgroud)
我试图找到在调度函数之前发生的事情,但是我找不到在静态句柄函数之前执行的任何函数。我感觉有些东西在 PHP 中崩溃了,或者立即执行作业,但我找不到核心中发生这种情况的地方。
控制器
class CreateTestJob
{
public function __invoke(Request $request)
{
TestJob::dispatch(rand(0, 999999));
}
}
Run Code Online (Sandbox Code Playgroud)
工作
class TestJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct($test)
{
$this->test = $test;
}
public function handle()
{
sleep(30);
echo 'done';
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试在 TestJob 的 de handle 函数中创建语法错误,以便我可以看到堆栈跟踪,但它显示“1 个未知帧”。我想知道那是什么
我有一个要用来制作动态mapGetters的道具,但mapGetters认为道具是未定义的,这可能是因为在道具之前已加载了计算对象。有人知道我如何使它动态吗?我的代码如下:
export default {
props: ['listType'],
components: {
addrow: AddRow
},
computed: {
...mapGetters({
list: `${this.listType}/list`,
current: 'Dropdown/current'
})
},
}
Run Code Online (Sandbox Code Playgroud)