1.使用Artisan CLI生成新的队列任务
php artisan make:job someJobs
该命令将会在app/Jobs
目录下生成一个新的类,并且该类实现了Illuminate\Contracts\Queue\ShouldQueue
接口,告诉Laravel该任务应该被推送到队列而不是同步运行。
2.推送任务到队列中
$this->dispatch(new someJobs($params));
3.运行队列监听器
php artisan queue:work --sleep=1 --timeout=60 --tries=3 --deamon
4.最后执行相应代码即可。
但是,这中间出现了一些问题:我修改了一些参数后,再次执行时,代码并没有按照预想的实现,最后通过请教别人和查看
手册,看到这样一句话:
由于后台队列worker是常驻进程,不重启的话不会应用代码中的更改,所以,最简单的部署后台队列worker的方式是使用部署脚本重启所有worker,
你可以通过在部署脚本中包含如下命令重启所有worker:
php artisan queue:restart
该命令会告诉所有队列worker在完成当前任务处理后重启以便没有任务被遗漏。
注意:这个命令依赖于缓存系统重启进度表,默认情况下,APC在CLI任务中无法正常工作,如果你在使用APC,
需要在APC配置中添加
apc.enable_cli=1
。