laravel 基于redis队列
本文环境 PHP7.3,Laravel6.0 不懂的可以评论或联系我邮箱:owen@owenzhang.com 著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。
配置文件
1.config/queue.php
'default' =>env('QUEUE_CONNECTION', 'redis'),
'redis' => [
'driver' => 'redis',
'connection' => 'queue',
'queue' => env('REDIS_QUEUE', 'queueList'),
'retry_after' => 90,
'block_for' => 5,
],
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
2.config/database.php
'redis' => [
'queue' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_QUEUE_DB', '15'),
],
],
添加错误记录表mysql
CREATE TABLE `failed_jobs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`connection` text COLLATE utf8mb4_unicode_ci NOT NULL,
`queue` text COLLATE utf8mb4_unicode_ci NOT NULL,
`payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
队列文件
data = $data;
}
// //调用
// $data = [
// [
// 'title' => 'a1',
// 'sort' => '11',
// ],
// [
// 'title' => 'a2',
// 'sort' => '22',
// ],
// ];
// $res = EmailJob::dispatch($data)->onQueue('emailQueue');
// var_dump($res);
// die();
/**
* 执行任务
*
* @return void
*/
public function handle()
{
//处理业务逻辑
Log::info('jobowen', $this->data);
foreach ($this->data as $datum) {
DB::table('copywriting_config')->insert([
'title' => $datum['title'],
'sort' => $datum['sort'],
]);
}
}
/**
* 任务失败的处理过程
*
* @param \Exception $exception
* @return void
*/
public function failed(\Exception $exception)
{
// 给用户发送任务失败的通知,等等……
Log::info('jobowenException', $exception->getMessage());
}
}
运行命令
//清除缓存
php artisan config:clear
php artisan queue:work redis
或者
php artisan queue:work --queue=emailQueue
Buy me a cup of coffee 🙂
觉得对你有帮助,就给我打赏吧,谢谢!
微信赞赏码链接,点击跳转: