From 724b7942ed5c2c60812f62801df98f2413980003 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 25 Feb 2013 21:32:48 +0400 Subject: [PATCH] daemon: install master shutdown handlers without a separate forking process --- update_daemon2.php | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/update_daemon2.php b/update_daemon2.php index cee61bb6..8b195581 100755 --- a/update_daemon2.php +++ b/update_daemon2.php @@ -31,6 +31,8 @@ die("error: This script requires PHP compiled with PCNTL module.\n"); } + $master_handlers_installed = false; + $children = array(); $ctimes = array(); @@ -121,21 +123,6 @@ "Maybe another daemon is already running.\n"); } - /* if (!pcntl_fork()) { - pcntl_signal(SIGINT, 'sigint_handler'); - register_shutdown_function('shutdown'); - - // Try to lock a file in order to avoid concurrent update. - $lock_handle = make_lockfile("update_daemon.lock"); - - if (!$lock_handle) { - die("error: Can't create lockfile. ". - "Maybe another daemon is already running.\n"); - } - - while (true) { sleep(100); } - } */ - // Testing database connection. // It is unnecessary to start the fork loop if database is not ok. $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); @@ -165,6 +152,14 @@ if ($pid == -1) { die("fork failed!\n"); } else if ($pid) { + + if (!$master_handlers_installed) { + _debug("[MASTER] installing shutdown handlers"); + pcntl_signal(SIGINT, 'sigint_handler'); + register_shutdown_function('shutdown'); + $master_handlers_installed = true; + } + _debug("[MASTER] spawned client $j [PID:$pid]..."); array_push($children, $pid); $ctimes[$pid] = time(); -- 2.39.5