> 自定義日志通道
修改驅動類型為 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
- 安裝
- 自定義函數
- 任務類
- 帶有日志的任務類