企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
安装扩展 `composer -vvv require topthink/think-queue` 将`config/queue.php`切换为redis模式. ~~~ 'default' => 'redis', ~~~ `config`下新建 <details> <summary>job.php</summary> ~~~ <?php //think-queue类名别名 return [ 'job1' => 'app\job\Job1' ]; ~~~ </details> `app\job`下新建 <details> <summary>Job1.php</summary> ~~~ <?php namespace app\job; use think\facade\Log; use think\queue\Job; class Job1 { public function fire(Job $job, $data) { try { $data['now']=time(); // 日志 Log::info(json_encode($data, 320)); // 如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法 $job->delete(); // 也可以重新发布这个任务 // $job->release($delay = 0); // $delay 为延迟时间,单位为秒 } catch (\Exception $e) { echo $e->getMessage(); } } public function failed($data) { // ...任务达到最大重试次数后,失败了 } } ~~~ </details> 在控制器中进行消息投递 ~~~ dump(Queue::push(config('job.job1'), ['push' => time()])); //延迟任务(秒) dump(Queue::later(5, config('job.job1'), ['push' => time()])); ~~~ 在项目根目录执行`php think queue:work`或者`php think queue:listen`即开始消费队列. 两种,具体的可选参数可以输入命令加 --help 查看 > 可配合supervisor使用,保证进程常驻 更多内容请参考 https://blog.csdn.net/will5451/article/details/80434174