Laravel JobId 如何使用它来检查作业是否完成
Laravel JobId how to use it to check if job is done
我无法检查作业是否完成。我到处都在寻找,但我没有看到 Laravel/Lumen 有什么用处,我可能遗漏了一些。示例代码:
$job = ((new FooJob($data)));
$jobID = dispatch($job);
if(is_numeric($jobID)) {
while(elapsedTime < 10sec) {
CHECK_JOB_SOMEHOW_IF_IS_DONE !?!
}
}
我已经安装了 https://github.com/gilbitron/laravel-queue-monitor,这真的很有用,可以保存已完成作业的数据。我也没有看到任何东西。
我有 Lumen 5.4 框架。
您需要根据文档 Queues - Lumen.
创建作业和 jobs_failed table
需要在 app/config 文件夹中创建 queue.php 文件,跟随文件模板:
return [
'default' => env('QUEUE_DRIVER', 'sync'),
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 60,
],
],
'failed' => [
'database' => env('QUEUE_CONNECTION', 'mysql'),
'table' => 'jobs_failed',
], ];
创建 tables 后,当使用 dispatch 方法时,信息将保存在作业 table.
中
要处理队列,请使用命令 php artisan queue:work
我给出了这个解决方案:
当工作在 Job::Handle 结束时完成时,我在 Redis 中做了一个标记,对于这个特定的工作(设置 redis 键 "job:[ID_JOB]" val 1)并且在请求部分我正在检查弹出Redis键,就是这样。一切正常。
另一种解决方案是通过 lumen/laravel 的事件系统来做一个 Redis 标记,但对于我想要的来说,它似乎有点矫枉过正。
我无法检查作业是否完成。我到处都在寻找,但我没有看到 Laravel/Lumen 有什么用处,我可能遗漏了一些。示例代码:
$job = ((new FooJob($data)));
$jobID = dispatch($job);
if(is_numeric($jobID)) {
while(elapsedTime < 10sec) {
CHECK_JOB_SOMEHOW_IF_IS_DONE !?!
}
}
我已经安装了 https://github.com/gilbitron/laravel-queue-monitor,这真的很有用,可以保存已完成作业的数据。我也没有看到任何东西。
我有 Lumen 5.4 框架。
您需要根据文档 Queues - Lumen.
创建作业和 jobs_failed table需要在 app/config 文件夹中创建 queue.php 文件,跟随文件模板:
return [
'default' => env('QUEUE_DRIVER', 'sync'),
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 60,
],
],
'failed' => [
'database' => env('QUEUE_CONNECTION', 'mysql'),
'table' => 'jobs_failed',
], ];
创建 tables 后,当使用 dispatch 方法时,信息将保存在作业 table.
中要处理队列,请使用命令 php artisan queue:work
我给出了这个解决方案:
当工作在 Job::Handle 结束时完成时,我在 Redis 中做了一个标记,对于这个特定的工作(设置 redis 键 "job:[ID_JOB]" val 1)并且在请求部分我正在检查弹出Redis键,就是这样。一切正常。
另一种解决方案是通过 lumen/laravel 的事件系统来做一个 Redis 标记,但对于我想要的来说,它似乎有点矫枉过正。