> 在common 模块下 新建 behavior 文件夹 ,创建 AutoGrabOrder.php (示例)
```
<?php
namespace app\common\behavior;
use think\Db;
use think\Queue;
class AutoGrabOrder
{
public function run($param){
// 当轮到该任务时,系统将生成一个该类的实例,并调用其 fire 方法
$jobHandlerClassName = 'app\common\job\AutoGrabOrder';
// 2.当前任务归属的队列名称,如果为新队列,会自动创建
$jobQueueName = "AutoGrabOrder";
// 3.当前任务所需的业务数据 . 不能为 resource 类型,其他类型最终将转化为json形式的字符串
$jobData = [ 'id' => $param['id'], 'bizId' => uniqid()] ;
// 4.将该任务推送到消息队列,延迟1小时
$isPushed = Queue::later($param['time'],$jobHandlerClassName , $jobData , $jobQueueName );
// database 驱动时,返回值为 1|false ; redis 驱动时,返回值为 随机字符串|false
if( $isPushed !== false ){
//已加入队列
Db::name("job_begin_record")->insert([
'data'=>json_encode($param),
'date'=>date("Y-m-d H:i:s",time())
]);
}else{
//任务开始失败
writeLog($param,"listen/job_begin_failed");
}
}
}
```
> 在common 模块下 新建 job 文件夹 ,创建 AutoGrabOrder.php (示例)
```
<?php
namespace app\common\job;
use think\Db;
use think\Exception;
use think\queue\Job;
/**
* Class AutoGrabOrder
* @package app\common\job
* 到时间自动解冻 冻结金额
*/
class AutoGrabOrder
{
public function fire(Job $job, $data)
{
try {
//你的处理逻辑
//处理完 删除队列
$job->delete();
} catch (Exception $exception) {
// 队列执行异常
writeLog('queue-' . get_class() . '-AutoGrabOrder' . ':执行异常,错误信息:' . $exception->getMessage(), "listen/AutoGrabOrder");
}
}
/**
* @param $data
* 队列执行失败
*/
public function failed($data)
{
Db::name("listen_failed")->insert([
"name" => "AutoGrabOrder",
"data" => json_encode($data),
"createtime" => time(),
"updatetime" => time()
]);
}
}
```
> 调用 hook 队列 ,在 index 模块下 的 tags.php 添加监听
```
//
'AutoGrabOrder'=>[
'app\\common\\behavior\\AutoGrabOrder'
]
```
> 控制器里调用
```
$da=["id"=>$id,"time"=>3600];
Hook::listen("AutoGrabOrder",$da);
```
> 宝塔安装 , Supervisor管理器 2.2
> 添加 守护进程
> 名称 填 AutoGrabOrder
> 启动用户 选择 root
> 运行目录选择 项目目录
> 启动命令 `php think queue:listen --queue AutoGrabOrder`
> 进程数量 1
*****
> 如果启动失败 ,则 删除 php 的一些 禁用函数 , exec ,putenv, popen 等等
- 空白目录
- thinkphp5
- tools-常用类库
- redis类库
- Excel类库
- File文件操作类库
- Http请求类库
- Maile邮件发送
- Hooks行为钩子
- 七牛云
- 随机数和字符串生成
- 字符串处理
- 时间类处理
- tree型转换
- 工具类库
- 文件打包下载
- 常用功能
- 文件上传
- php生成word文档
- elasticsearch 基本搜索
- 使用jwt开发API接口
- 安装模及搭建
- ApiCheck.php
- ApiCheckLogin.php
- common.php
- Login.php
- Comment.php
- 汉字转拼音
- 安装使用
- Pinyin类
- elasticsearch操作
- 常用方法
- 数据源生成layui-select
- 获取自定义配置项
- 百度编辑器
- 格式化文件大小
- 多语言设置
- hook监听
- 域名绑定到模块
- thinkphp6
- 文件上传
- tp5totp6
- 创建路径
- 获取类所有方法
- password_hash加密验证
- 生成 qrcode
- 邮件发送
- 获取QQ信息
- GoogleAuthenticator
- redis限流
- redis 加锁
- 百度翻译
- QueryList爬取数据
- 获取时间类
- 命令
- Git常用命令
- easyswoole
- pix_qrcode
- 验证 cpf,cnpj
- php常用方法
- 日志
- 卡通头像
- 两位小数
- 图片转base64
- auth加密解密
- phpoffice/phpspreadsheet导入导出
- fastadmin
- 树结构
- 单选框
- 复选框
- 二级搜索
- select选择框
- selectpage选中回调事件
- 标签添加
- 修改where条件
- 表格列表中添加input框
- selectpage事件
- fieldlist
- js操作
- test_js
- 多表格
- template模板