54 lines
1.7 KiB
PHP
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')]);
|
|
});
|
|
}
|
|
}
|