summaryrefslogtreecommitdiff
path: root/update_daemon2.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-02-25 21:32:48 +0400
committerAndrew Dolgov <[email protected]>2013-02-25 21:32:48 +0400
commit724b7942ed5c2c60812f62801df98f2413980003 (patch)
tree36e391933897b64fff6804407d61fc2ecc1868c9 /update_daemon2.php
parenta44bfcfd529439c2ac05d0f300fd241b54a24af3 (diff)
daemon: install master shutdown handlers without a separate forking process
Diffstat (limited to 'update_daemon2.php')
-rwxr-xr-xupdate_daemon2.php25
1 files changed, 10 insertions, 15 deletions
diff --git a/update_daemon2.php b/update_daemon2.php
index cee61bb6e..8b1955818 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();