feat(scheduler): live running indicators for cron-triggered jobs
Add api/status.php — reads all scheduled jobs' stat files and returns a
{id: status} map. The scheduler page polls it every 3s and lights up the
dot on any job whose stat shows status=running, clearing it when done.
Replace single vvRunningId with vvRunningSet (Set) so multiple jobs can
show as running simultaneously. vvSetDot/vvClearDot handle per-job dots
and the header dot for the active job. Remove stale-count detection from
vvFetchRight — status poll is now the single source of truth.
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
// Returns current run status for all scheduled jobs.
|
||||
// Used by the scheduler page to light up running indicators without user interaction.
|
||||
header('Content-Type: application/json');
|
||||
require_once dirname(__DIR__) . '/include/scheduler.php';
|
||||
|
||||
$schedule = vv_schedule_load();
|
||||
$result = [];
|
||||
foreach ($schedule as $id => $entry) {
|
||||
$statFile = vv_job_stat_path($id);
|
||||
if (!file_exists($statFile)) continue;
|
||||
$stat = json_decode(@file_get_contents($statFile) ?: '{}', true) ?: [];
|
||||
$status = $stat['status'] ?? 'unknown';
|
||||
if ($status === 'running' && !empty($stat['pid']) && !file_exists("/proc/{$stat['pid']}")) {
|
||||
$status = 'error';
|
||||
}
|
||||
$result[$id] = $status;
|
||||
}
|
||||
echo json_encode($result);
|
||||
Reference in New Issue
Block a user