Files
x-server-mobile/backend/app/process/Task.php
T
2026-03-05 13:15:05 +08:00

54 lines
1.7 KiB
PHP

<?php
namespace app\process;
use app\Model\UsedCar;
use support\Db;
use support\Log;
use Workerman\Crontab\Crontab;
/**
* 定时任务进程
* 用于定期清理PDF文件和归档二手车记录
*/
class Task
{
public function onWorkerStart()
{
// 每天凌晨3点清理PDF文件
new Crontab('0 0 3 * * *', function () {
Log::info('开始清理PDF文件', ['time' => date('Y-m-d H:i:s')]);
// 清空数据库中的PDF路径
Db::table('used_car')->update(['pdf_src' => '']);
// 删除runtime目录下的PDF文件
$pdfFiles = glob(runtime_path('pdf/*.pdf'));
if (is_array($pdfFiles)) {
array_map('unlink', $pdfFiles);
}
// 删除public目录下的PDF文件
$publicPdfFiles = glob(public_path('pdf/*.pdf'));
if (is_array($publicPdfFiles)) {
array_map('unlink', $publicPdfFiles);
}
Log::info('PDF文件清理完成', ['time' => date('Y-m-d H:i:s')]);
});
// 每3小时自动归档15天前的二手车记录(将状态改为删除)
new Crontab('0 25 */3 * * *', function () {
Log::info('开始归档二手车记录', ['time' => date('Y-m-d H:i:s')]);
// 将15天前创建的记录状态改为删除(状态=3)
$count = Db::table('used_car')
->where('status', UsedCar::STATUS_NORMAL)
->where('created_at', '<', date('Y-m-d H:i:s', time() - (86400 * 15)))
->update(['status' => UsedCar::STATUS_DELETED]);
Log::info('归档完成', ['affected_rows' => $count, 'time' => date('Y-m-d H:i:s')]);
});
}
}