#!/usr/bin/env php createSchedulerRunService()->runDueJobs(); if (!($result['ok'] ?? false)) { $error = (string) ($result['error'] ?? 'unexpected_error'); fwrite(STDERR, sprintf("scheduler run failed: %s\n", $error)); $exitCode = 1; } else { $line = sprintf( "scheduler completed: processed=%d success=%d failed=%d skipped=%d duration_ms=%d\n", (int) ($result['processed'] ?? 0), (int) ($result['success'] ?? 0), (int) ($result['failed'] ?? 0), (int) ($result['skipped'] ?? 0), (int) ($result['duration_ms'] ?? 0) ); fwrite(STDOUT, $line); } } catch (Throwable $exception) { try { app(SystemAuditService::class)->record('scheduler.run', 'failed', [ 'error_code' => 'unexpected_error', 'metadata' => [ 'trigger_type' => 'scheduler', 'run_status' => 'failed', 'processed' => 0, 'success_count' => 0, 'failed_count' => 0, 'skipped_count' => 0, 'duration_ms' => max(0, (int) round((microtime(true) - $startedAt) * 1000)), 'bootstrap_error' => true, ], ]); } catch (Throwable) { // fail-open } fwrite(STDERR, sprintf("scheduler run failed: unexpected_error: %s\n", $exception->getMessage())); $exitCode = 1; } finally { DB::close(); } exit($exitCode);