Files
FendxPHP/app/Command/SchedulerCommand.php

61 lines
1.4 KiB
PHP
Raw Normal View History

<?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";
}
}
}