laravel使用队列的一点思考

几个重要的point:

1、运行队列进程时,通过 --tries 参数项来设置队列任务允许的最大尝试次数,如果没有指定 --tries 选项的值,任务会被无限期重试。

自己遇到的坑,一直没设置--tries导致一直没看到失败任务的报错信息。

2、失败任务的回调函数要这样写:

public function failed(\Exception $exception)
{
// 发送失败通知, etc...
DB::table('test')->insert([
'key'=>'12',
'data1'=>'error',
'created_at'=>date('Y-m-d H:i:s')
]);
}
failed函数里的参数一定不要忘记“\”,文档里没有加“\”,\Exception $exception。

3、失败任务会记录在failed_jobs表中,可在queue.php中配置,表名failed_jobs可配

'failed' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
//我是分割线
php artisan queue:failed-table
php artisan migrate --path=xxx
项目命令行不要忘记上面这两句,如果还有其他迁移文件需要注意,加上--path指定文件。

4、错误日志已配置,但是没有输出到错误日志文件中,待解决,附配置文件:

[program:queue]
process_name=%(program_name)s_%(process_num)02d
command=/Applications/MAMP/bin/php/php7.1.3/bin/php /Users/cl/Documents/my/laravel56/artisan queue:work --tries=1
autostart=true
autorestart=true
user=cl
numprocs=8
redirect_stderr=false
stdout_logfile=/Users/cl/Documents/my/forge/laravel56/worker.log
stderr_logfile=/Users/cl/Documents/my/forge/laravel56/workererror.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

5、如果对任务队列相关代码进行修改,记得在项目命令行执行:

php artisan queue:restart

如果对supervisor进行配置修改

supervisorctl update
supervisorctl reload

 

posted @ 2019-01-21 09:35  mayer326  阅读(352)  评论(0)    收藏  举报