mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 23:12:49 +08:00
61 lines
1.4 KiB
PHP
61 lines
1.4 KiB
PHP
|
|
<?php
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace App\Command;
|
||
|
|
|
||
|
|
use Fendx\Core\Annotation\Service;
|
||
|
|
use Fendx\Job\Scheduler\Scheduler;
|
||
|
|
use Fendx\Log\Logger;
|
||
|
|
|
||
|
|
#[Service]
|
||
|
|
class SchedulerCommand
|
||
|
|
{
|
||
|
|
private Scheduler $scheduler;
|
||
|
|
|
||
|
|
public function __construct(Scheduler $scheduler)
|
||
|
|
{
|
||
|
|
$this->scheduler = $scheduler;
|
||
|
|
}
|
||
|
|
|
||
|
|
public function run(): void
|
||
|
|
{
|
||
|
|
Logger::info('Starting scheduler');
|
||
|
|
|
||
|
|
try {
|
||
|
|
$this->scheduler->start();
|
||
|
|
} catch (\Throwable $e) {
|
||
|
|
Logger::error('Scheduler error: ' . $e->getMessage());
|
||
|
|
throw $e;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public function list(): void
|
||
|
|
{
|
||
|
|
$jobs = $this->scheduler->getJobs();
|
||
|
|
|
||
|
|
echo "Scheduled Jobs:\n";
|
||
|
|
echo "================\n";
|
||
|
|
|
||
|
|
foreach ($jobs as $job) {
|
||
|
|
echo sprintf(
|
||
|
|
"Job: %s::%s\nCron: %s\nDescription: %s\nNext run: %s\n\n",
|
||
|
|
$job['class'],
|
||
|
|
$job['method'],
|
||
|
|
$job['cron'],
|
||
|
|
$job['description'],
|
||
|
|
date('Y-m-d H:i:s', $job['next_run'])
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public function runJob(string $jobName): void
|
||
|
|
{
|
||
|
|
try {
|
||
|
|
$this->scheduler->runJob($jobName);
|
||
|
|
echo "Job '$jobName' executed successfully\n";
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
echo "Job execution failed: " . $e->getMessage() . "\n";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|