> 自定义日志通道
修改驱动类型为 redis
~~~
'default' => 'redis',
~~~
~~~
// 其它日志通道配置
'queue' => [
// 日志记录方式
'type' => 'File',
// 日志保存目录
'path' => base_path() . '/queue/log',
// 单文件日志写入 默认值 false
'single' => date('Ymd'),
// 独立日志级别
'apart_level' => ['success', 'error', 'failed'],
// 最大日志文件数量
'max_files' => 0,
// 使用JSON格式记录
'json' => false,
// 日志处理
'processor' => null,
// 关闭通道日志写入
'close' => false,
// 自定义时间显示格式
'time_format' => 'Y-m-d H:i:s',
// 日志输出格式化
'format' => '[%s][%s] %s',
// 是否实时写入
'realtime_write' => false,
],
~~~
> 带有日志的任务类 app\\queue\\Task.php
~~~
<?php
namespace app\queue;
use think\queue\Job;
use think\facade\Log;
class Task
{
/**
* 队列任务
* @param Job $job
* @param [type] $data 自定义数据
*/
public function fire(Job $job, $data)
{
//....这里执行具体的任务
try {
$this->json($data);
$log = [
'data' => $data,
'attempts' => $job->attempts(),
];
######## 执行任务逻辑 ########
$rand = mt_rand(1, 10);
$log['rand'] = $rand;
$result = $rand > 5;
if ( $result ) throw new \Exception('执行任务发生错误');
######## 执行任务逻辑 / ########
$log['message'] = '任务执行成功';
Log::channel('queue')->success($log);
$job->delete();
} catch (\Throwable $th) {
$log['errMsg'] = $th->getMessage();
Log::channel('queue')->error($log);
// $job->attempts() 当前任务执行次数
if ( $job->attempts() > 2 ) {
// 如果任务执行成功后 记得删除任务,
// 不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
$job->delete();
} else {
// 重新发布任务
$delay = 1;
$job->release($delay);//$delay为延迟时间
}
}
}
/**
* 任务执行失败时触发
*/
public function failed($data)
{
// 任务达到最大重试次数后,失败了
$data['message'] = '任务执行失败';
Log::channel('queue')->failed($data);
}
/**
* 执行任务时输出自定义数据
*/
public function json($data)
{
echo json_encode($data, JSON_UNESCAPED_UNICODE) . PHP_EOL;
}
}
~~~
- 搭建ThinkPHP6的开发环境
- 配置ThinkPHP6
- 必要的基础知识(basic)
- MVC开发模式
- 控制器(controller)
- 数据库(database)
- 模型(model)
- 模型关联(relation)
- 视图(view)
- Session
- Cookie
- 缓存(cache)
- 上传(upload)
- 验证器(validate)
- 验证码(captcha)
- 命令行(command)
- 服务器部署(deploy)
- 数据备份(backup)
- 数据同步(synchronization)
- 订阅服务(subscribe)
- PHP 易混淆知识点
- 助手函数
- MySQL规范
- Redis 规范
- office插件 phpoffice
- 拼音插件 pinyin
- 日期插件 datetime
- 消息插件 amqp
- 产品部署环境的搭建
- PDF 等杂项处理
- 文件上传
- 常用扩展
- flc/dysms
- 使用示例 ①
- 使用示例 ②
- qiniu/php-sdk
- 简介
- 使用示例
- 使用示例 2 ②
- liliuwei/thinkphp-jump
- 扩展介绍
- 下载扩展
- 使用方法
- topthink/think-captcha
- 安装扩展
- 验证码显示
- 更换验证码
- 验证码校验
- 验证码配置
- 自定义验证码
- phpoffice/phpspreadsheet
- 数据写入表格
- 读取表格数据
- topthink/think-queue
- 安装
- 自定义函数
- 任务类
- 带有日志的任务类