Files
car_info/app/process/ShipUpdateScheduler.php
T

59 lines
1.7 KiB
PHP
Raw Normal View History

2025-06-10 09:04:40 +08:00
<?php
namespace app\process;
use app\command\UpdateShipInfoCommand;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
use Workerman\Crontab\Crontab;
use Workerman\Timer;
use Workerman\Worker;
use support\Log;
class ShipUpdateScheduler extends Worker
{
public function onWorkerStart()
{
new Crontab('0 5 */3 * *', function(){
$this->runShipUpdateCommand();
});
// 每三天执行一次船舶信息更新
// 3天 = 3 * 24 * 60 * 60 = 259200秒
// Timer::add(259200, function() {
// $this->runShipUpdateCommand();
// });
//
// // 启动时也执行一次,确保有数据
// $this->runShipUpdateCommand();
//
// Log::info('船舶信息更新调度器已启动');
}
/**
* 执行船舶信息更新命令
*/
private function runShipUpdateCommand()
{
try {
Log::info('开始执行船舶信息更新任务');
$command = new UpdateShipInfoCommand();
$input = new ArrayInput([]);
$output = new BufferedOutput();
$exitCode = $command->run($input, $output);
if ($exitCode === 0) {
Log::info('船舶信息更新任务执行成功: ' . $output->fetch());
} else {
Log::error('船舶信息更新任务执行失败: ' . $output->fetch());
}
} catch (\Exception $e) {
Log::error('船舶信息更新任务执行异常', [
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString()
]);
}
}
}