- 1.2 环境搭建&安装
- 1.3 项目说明
- 1.4 路由说明
- 1.5 目录结构
- 2.1 模板
- 2.1.1 前台模板
- 2.1.2 后台模板
- 2.1.3 模板标签
- 2.1.3.1 content内容标签
- 2.1.3.2 spf内容标签
- 2.1.3.3 tags内容标签
- 2.1.3.4 comment评论标签
- 2.1.3.5 position推荐位标签
- 2.1.3.6 get数据获取标签
- 2.1.3.7 template模板引入标签
- 2.1.3.8 navigate导航标签
- 2.1.3.9 pre上一篇标签
- 2.1.3.10 next下一篇标签
- 2.1.3.11 blockcache区块缓存标签
- 2.2 行为管理
- 2.2.1 行为规则
- 2.2.2 使用方法
- 2.2.3 测试Behaivor
- 2.3 模块开发
- 2.4.1 权限
- 2.4.2 框架页
- 2.4.3 消息中心
- 2.4.4 登录页安全
- 2.5 请求缓存
- 3.1 Auth
- 3.1.1 通用授权
- 3.1.2 自动登录授权
- 3.1.3 开放平台授权
- 3.2 Wechat
- 3.2.2 v2.x
- 3.3 Area
- 3.3.1 中国区域
- 3.3.2 中国高校
- 3.4 Sms
- 3.4.1 v3
- 3.4.2 v2
- 3.5 Cron
- 3.6 Transport
- 3.6.1 使用
- 3.6.2 最佳实践
- 3.7 Message
- 3.8 Record
- 3.8.1 数据结构
- 3.8.2 使用指南
- 3.9 Wxapp
- 3.10 Log
- 3.11 Alipay
- 3.12 Unionpay
- 3.13 Oss
- 3.14 Chart
- 3.15 Queue
- 3.16 Mirror
- 3.17 Wap
- 3.18 Shop
- 3.19 Search
- 3.20 Addons
- 3.21 Collection
- 3.22 Comment
- 3.23 Domain
- 3.24 Form
- 3.25 Link
- 3.26 Vote
- 3.27 Member
- 4.1 规范和约定
- 4.2 部署指南
- 4.3 常见错误
- 4.4 开发Tips汇总
- 4.4.1 模块
- 4.4.2 自定义后台iconfont
- 4.4.3 自定义成功(失败)页面
- 4.4.4 自定义栏目列表搜索条件
- 4.4.5 根据管理员的权限显示
- 4.5 数据库的存储引擎
- 4.6 行为管理最佳实践
- 4.7 性能优化
- 4.8 ThinkPHP
- 4.8.1 模型
- 4.9.1 发送邮件
- 5.1 系统函数
- 5.2 技术栈
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.15 Queue
任务队列
任务队列适用后台长时间,批量、异步执行任务,如邮件、短信发送,每日生成报表等。
使用
1.创建任务
要点:继承 Queue\Libs\Job
并实现handle()
方法
use Queue\Libs\Job;
class UpdateJob extends Job {
//定义 你的Job数据
//注意:必须为public,否则不保存该数据!
public $userid;
public $username;
//利用初始化函数导入数据
public function __construct($userid, $username) {
$this->userid = $userid;
$this->username = $username;
}
//实现handle()
public function handle() {
//your code
}
}
2.把任务推送到指定队列中
$job = new UpdateJob(time(), 'ztbcms');
$queue = Queue::getInstance();
$result = $queue->push('high', $job);//注: high即为队列名
//或者延迟小时执行
$result = $queue->push('high', $job, 1*60*60);//注: 第三个参数即为延迟执行时长,单位:秒
部署
1.简单部署,本地测试时可以选择这种方式
1.1. 启动队列
$ php index.php /queue/worker/run/queue/high,mid,low
上述命令监听了3个名为high,mid,low的队列。路由解析方式跟TP重写URL原理一样,/queue/worker/run
分别对应Module,Controller,Action,后面则是key-value的 参数
1.2. 平滑停止
即运行完当前的任务就退出当前队列
$ php index.php /queue/worker/stop
3. 更稳定,多进程部署
使用进程管理软件进行配置。如:supervisor, PM2
最佳实践
0.根据业务调整配置
Queue/Confi/config.php
:
return array(
'QUEUE_SLEEP' => 3,//队列空闲时,休眠时间
'QUEUE_MAX_RETRY' => 3, //最大重试次数
);
若日常队列任务不多,QUEUE_SLEEP
可以适当延长
1.定期删除已完成任务
安装[计划任务模块],添加计划任务Queue\DeleteFinishJob
,推荐每日执行一次,每次删除7日前的已完成的任务。当然,可以根据你的业务逻辑调整其执行频率。
class DeleteFinishJob extends Cron {
public function run($cronId) {
$hour = 7 * 24; //删除X小时前已完成的任务,你可以
//....
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论