我希望能够在工作顺利完成后发出类似的通知。
我在这样的模型中调用我的工作:
public function doSomething() {
$job = new \App\Jobs\MyJob();
app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($job);
}
这就是我的职位标题:
class MyJob extends Job implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, SerializesModels, Queueable;
...
}
模型作业调用实际上是从控制器方法触发的:
public function getDoSomething($id) {
$item = Item::findOrFail($id);
$item->doSomething();
return response()->json(true);
}
由AJAX调用处理:
$.ajax({
url: $(this).attr('href'),
type: 'GET',
dataType: 'json',
success: $.proxy(function(result) {
this.application.notification.showMessage('Job is being processed.');
}, this),
error: $.proxy(function(result) {
console.error(result);
}, this)
});
答案 0 :(得分:3)
您可以使用队列事件,Laravel文档解释它:https://laravel.com/docs/5.6/queues#job-events
答案 1 :(得分:1)
工作完成事件
Queue::after
方法允许您注册在排队作业成功执行时要执行的回调。此回调是执行其他日志记录,为后续作业排队或增加仪表板统计信息的绝佳机会。
这已在您从Laravel分享的页面链接中。
答案 2 :(得分:1)
对于派对来说,我可能已经迟到了,但我可以想到几种选择。当用户点击前端的按钮时,您可以将属性设置为禁用,并为某些文本添加“处理”等文本。然后你可以:
我认为Forge正在使用推送器端口来执行websockets,以便在您尝试部署新代码时查看服务器是否处于活动状态。如果您打开Devtools-> Resources->套接字,我可以清楚地看到通信。
答案 3 :(得分:1)
您可以在AppServiceProvider上使用Queue :: after函数
导入此依赖项
use Illuminate\Support\Facades\Queue;
use Illuminate\Queue\Events\JobProcessed;
use Illuminate\Queue\Events\JobProcessing;
在启动方法上,您将使用它
public function boot()
{
Queue::before(function (JobProcessing $event) {
// $event->connectionName
// $event->job
// $event->job->payload()
});
Queue::after(function (JobProcessed $event) {
// $event->connectionName
// $event->job
// $event->job->payload()
});
}