当前快讯:PHP-web框架Laravel-队列(三)
并发处理
Laravel的队列系统默认是串行处理作业的,这意味着每个作业都要等待前一个作业处理完毕后才能开始处理。但是,有时候我们需要同时处理多个作业,这就需要并发处理。
Laravel通过将队列连接设置为"redis","database"或"beanstalkd"来实现并发处理。这些连接可以处理多个并发作业。
(资料图片)
作业优先级
Laravel队列系统还支持作业优先级,这意味着我们可以为不同类型的作业分配不同的优先级。优先级高的作业将在优先级低的作业之前处理。优先级默认为0,值越高表示优先级越高。
我们可以使用--queue
选项在调度作业时指定作业队列。例如,我们可以使用以下代码将作业推送到"high"队列:
ProcessPodcast::dispatch($podcast)->onQueue("high");
然后,我们可以使用以下命令启动一个专用的队列进程来处理高优先级队列:
php artisan queue:work --queue=high
作业超时
如果一个作业执行时间过长,可能会导致队列堵塞,这就需要设置作业的超时时间。Laravel默认的作业超时时间为60秒。
我们可以在定义作业类时使用--timeout
选项来设置超时时间。例如,以下代码设置超时时间为120秒:
php artisan make:job ProcessPodcast --timeout=120
如果作业在超时时间内没有处理完成,Laravel将尝试终止该作业并将其标记为失败。
重试作业
Laravel队列系统默认会自动重试作业,如果一个作业失败了,它将被重新推送到队列中,直到达到最大尝试次数。最大尝试次数默认为3,可以在config/queue.php
中进行配置。
如果要禁用作业重试,我们可以在定义作业类时使用--tries
选项将最大尝试次数设置为0:
php artisan make:job ProcessPodcast --tries=0
作业失败
如果一个作业达到最大尝试次数仍然失败,它将被标记为失败。Laravel默认会将失败的作业写入日志文件。我们还可以在config/queue.php
中配置将失败的作业发送到其他通知渠道,例如电子邮件或Slack。
当然,我们还可以通过手动调用fail
方法来标记一个作业为失败:
/** * Execute the job. * * @return void */public function handle(){ if ($this->somethingWentWrong()) { $this->fail(new Exception("Something went wrong.")); } // Process the podcast...}
相关新闻
- 当前快讯:PHP-web框架Laravel-队列(三)
- 《崩坏星穹铁道》怎么完成如果在冬夜一群旅人任务|环球短讯
- 潮宏基(002345)2022年报及2023年一季报点评:Q1强劲复苏 看好全年产品+渠道双轮驱动
- 焦点短讯!景德镇:购中心城区二手住房契税补贴50% 公积金贷款最高60万(全文)
- 上海实施多子女家庭住房公积金支持政策:家庭最高可贷144万元 环球今头条
- “五一”假期,中国交通显实力
- 即时看!众安在线涨超6% 首季保费收入60亿人民币 同比增长21%
- 环球看热讯:重庆做一次三代试管婴儿费用大约需要多少钱?
- 环球今热点:宣布停产!恒大汽车要 GG 了?
- 2.74亿人次,花了1480.56亿元!
- 【环球时快讯】郑东新区祭城路街道办事处召开近期重点工作推进会
- 馆长来了!让世界看见文物里的黄河文化-天天热推荐
- 当前热文:4月份中国物流业景气指数公布:业务活动保持扩张态势 向好基础继续巩固
- 四川宜宾市兴文县附近发生4.9级左右地震
- 重点聚焦!全国电影票房突破14亿元,《长空之王》《人生路不熟》表现优异-7300万元 “五一”档上海票房全国登顶
- 全球速递!2023年4月份物流业景气指数显示:业务活动保持扩张态势 向好基础继续巩固
- 中国游客回归助力埃及旅游业加快复苏
- 全球关注:开源证券:给予东诚药业买入评级
- 中国四大城市群包括哪些城市_中国四大城市群
- 动态:祛除法令纹的方法有哪些_如何祛除法令纹效果最佳