]> git.wh0rd.org Git - tt-rss.git/commitdiff
daemon: install master shutdown handlers without a separate forking process
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Mon, 25 Feb 2013 17:32:48 +0000 (21:32 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Mon, 25 Feb 2013 17:32:48 +0000 (21:32 +0400)
update_daemon2.php

index cee61bb6e69ad52e3a5c6d93db0d025b2d5d2a34..8b19558181cf53006a4d792549b69e716f29d00a 100755 (executable)
@@ -31,6 +31,8 @@
                die("error: This script requires PHP compiled with PCNTL module.\n");
        }
 
+       $master_handlers_installed = false;
+
        $children = array();
        $ctimes = array();
 
                        "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);
                                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();