chore: 提供中文字符编码解决方案
This commit is contained in:
@@ -1879,6 +1879,38 @@ function paramFilter($param)
|
||||
return preg_replace($filter_rule, '', $param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化数据为日志友好的字符串(保持中文可读性)
|
||||
*
|
||||
* @param mixed $data 要格式化的数据
|
||||
* @return string 格式化后的字符串
|
||||
*/
|
||||
function formatForLog($data): string
|
||||
{
|
||||
if (is_array($data) || is_object($data)) {
|
||||
// 使用 JSON_UNESCAPED_UNICODE 保持中文可读性
|
||||
return json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
||||
}
|
||||
|
||||
return (string) $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化数据为可导出的字符串(完全避免Unicode转义)
|
||||
*
|
||||
* @param mixed $data 要格式化的数据
|
||||
* @return string 格式化后的字符串
|
||||
*/
|
||||
function exportForLog($data): string
|
||||
{
|
||||
if (is_array($data) || is_object($data)) {
|
||||
// 使用 var_export 完全避免Unicode转义
|
||||
return var_export($data, true);
|
||||
}
|
||||
|
||||
return (string) $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 简单日志写入
|
||||
* @param string $msg 日志内容
|
||||
|
||||
@@ -56,4 +56,17 @@ class ScheduleDict
|
||||
if($code) return $list[$code] ?? '';
|
||||
return $list;
|
||||
}
|
||||
|
||||
public static function getSuggestion(string $type) {
|
||||
switch($type) {
|
||||
case self::default:
|
||||
return '请检查系统计划任务配置,确保 cron 进程正常运行,并检查网络连接和 SSL 证书设置。';
|
||||
case self::url:
|
||||
return '请检查网络连接、目标 URL 可访问性、HTTP 状态码和接口认证配置。可以使用 curl 命令手动测试接口。';
|
||||
case self::cli:
|
||||
return '请检查 cron 服务状态、命令执行权限、脚本路径和 PHP CLI 环境。建议使用 crontab -l 查看当前任务配置。';
|
||||
default:
|
||||
return '请检查计划任务配置文件和相关权限设置,确保所有依赖服务正常运行。';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,13 +61,13 @@ class Cron extends BaseModel
|
||||
*/
|
||||
public function execute($type = 'default')
|
||||
{
|
||||
log_write('计划任务开始执行', 'debug');
|
||||
log_write('计划任务开始执行', 'info');
|
||||
if (config('cron.default') != $type) {
|
||||
log_write('计划任务方式不匹配<不能执行/model/system/Cron/execute>:' . config('cron.default') . ' != ' . $type, 'debug');
|
||||
log_write('计划任务方式不匹配<不能执行/model/system/Cron/execute>:' . config('cron.default') . ' != ' . $type, 'warning');
|
||||
return true;
|
||||
}
|
||||
|
||||
log_write('当前执行方式:' . $type, 'debug');
|
||||
log_write('当前执行方式:' . $type, 'info');
|
||||
|
||||
try {
|
||||
//写入计划任务标记运行
|
||||
@@ -78,7 +78,7 @@ class Cron extends BaseModel
|
||||
$query_execute_time = $is_open_queue == 1 ? time() + 60 : time();
|
||||
$list = model('cron')->getList([['execute_time', '<=', $query_execute_time]]);
|
||||
$now_time = time();
|
||||
log_write('计划任务开始执行,查询计划任务列表', 'debug');
|
||||
log_write('计划任务开始执行,查询计划任务列表', 'info');
|
||||
|
||||
if (!empty($list)) {
|
||||
foreach ($list as $k => $v) {
|
||||
@@ -97,7 +97,7 @@ class Cron extends BaseModel
|
||||
return $res ?? $this->success();
|
||||
}, function ($params) {
|
||||
try {
|
||||
log_write('调用事件名称:' . $params['name'], 'debug');
|
||||
log_write('调用事件名称:' . $params['name'], 'info');
|
||||
$res = event($params['event'], ['relate_id' => $params['relate_id']]);
|
||||
} catch (\Exception $e) {
|
||||
$res = $this->error($e->getMessage(), $e->getMessage());
|
||||
@@ -150,7 +150,7 @@ class Cron extends BaseModel
|
||||
// $this->setCron();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
log_write('计划任务执行异常<model/system/Cron/execute>:' . $e->getMessage(), 'debug');
|
||||
log_write('计划任务执行异常<model/system/Cron/execute>:' . $e->getMessage(), 'error');
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -252,9 +252,16 @@ class Cron extends BaseModel
|
||||
$remark = 'Cron计划任务已停止!当前启动的任务方式:' . ScheduleDict::getType(config('cron.default')) . '。';
|
||||
$error = self::getError(config('cron.default'));
|
||||
if (!empty($error)) {
|
||||
$remark .= json_encode($error);
|
||||
$remark .= formatForLog($error);
|
||||
}
|
||||
log_write('Cron计划任务校验计划任务是否正常运行,计划任务异常,异常信息:' . json_encode($error) . ',文件路径:' . $file, 'warning');
|
||||
|
||||
$detail = [
|
||||
'error'=> $error,
|
||||
'remark' => $remark,
|
||||
'suggestion' => ScheduleDict::getSuggestion(config('cron.default')),
|
||||
];
|
||||
|
||||
log_write('Cron计划任务校验计划任务是否正常运行,计划任务异常,异常信息:' . formatForLog($detail) . ',文件路径:' . $file, 'warning');
|
||||
return $this->error([], $remark);
|
||||
} catch (\Exception $e) {
|
||||
log_write('Cron计划任务校验计划任务是否正常运行异常:' . $e->getMessage() . ',异常行:' . $e->getLine() . ',文件路径:' . $file, 'error');
|
||||
|
||||
Reference in New Issue
Block a user