From 8ed54131169a8b0f11f04717487eb90b09ab5b59 Mon Sep 17 00:00:00 2001 From: igor Date: Mon, 15 Jun 2026 05:14:21 +0200 Subject: [PATCH] added loop mode for worker.php --- scripts/worker.php | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/scripts/worker.php b/scripts/worker.php index 38b1eb2..6fb9692 100644 --- a/scripts/worker.php +++ b/scripts/worker.php @@ -19,6 +19,10 @@ if (php_sapi_name() !== 'cli') { die("This script can only be run from the command line." . PHP_EOL); } +// Parse arguments +$isLoop = in_array('--loop', $argv); +$loopInterval = 5; // seconds + $lockFile = sys_get_temp_dir() . '/webwizard_worker.lock'; $fp = fopen($lockFile, 'w'); @@ -26,17 +30,39 @@ if (!flock($fp, LOCK_EX | LOCK_NB)) { die("[" . date('Y-m-d H:i:s') . "] Worker is already running. Skipping." . PHP_EOL); } -echo "[" . date('Y-m-d H:i:s') . "] Starting LLMpool worker..." . PHP_EOL; - -try { - $worker = new LLMpool(); - $worker->processQueue(); -} catch (Throwable $e) { - echo "[" . date('Y-m-d H:i:s') . "] FATAL ERROR: " . $e->getMessage() . PHP_EOL; +if ($isLoop) { + echo "[" . date('Y-m-d H:i:s') . "] Worker started in loop mode (interval: {$loopInterval}s)" . PHP_EOL; +} else { + echo "[" . date('Y-m-d H:i:s') . "] Starting LLMpool worker (single run)..." . PHP_EOL; } -echo "[" . date('Y-m-d H:i:s') . "] Finished LLMpool worker." . PHP_EOL; +$worker = new LLMpool(); +/** + * Main processing logic encapsulated to avoid duplication + */ +$processCycle = function() use ($worker) { + echo "[" . date('Y-m-d H:i:s') . "] Cycle started: Processing queue..." . PHP_EOL; + try { + $worker->processQueue(); + } catch (Throwable $e) { + echo "[" . date('Y-m-d H:i:s') . "] FATAL ERROR: " . $e->getMessage() . PHP_EOL; + } + echo "[" . date('Y-m-d H:i:s') . "] Cycle finished." . PHP_EOL; +}; + +// Execution based on mode +if ($isLoop) { + while (true) { + $processCycle(); + sleep($loopInterval); + } +} else { + $processCycle(); + echo "[" . date('Y-m-d H:i:s') . "] Finished LLMpool worker." . PHP_EOL; +} + +// These are only reached in non-loop mode (or if loop is broken by signal) flock($fp, LOCK_UN); fclose($fp); unlink($lockFile);