]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/daemon.php
Merge commit 'refs/merge-requests/41' of https://gitorious.org/social/mainline into...
[quix0rs-gnu-social.git] / lib / daemon.php
index 9d89c63e781eb2e25353c5501850510cb87cc612..eaeecc10589531325cd2506fbd421300ad11a2f4 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, Control Yourself, Inc.
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
 class Daemon
 {
     var $daemonize = true;
+    var $_id = 'generic';
 
     function __construct($daemonize = true)
     {
@@ -35,8 +36,28 @@ class Daemon
         return null;
     }
 
+    function get_id()
+    {
+        return $this->_id;
+    }
+
+    function set_id($id)
+    {
+        $this->_id = $id;
+    }
+
     function background()
     {
+        /*
+         * This prefers to Starting PHP 5.4 (dotdeb), maybe earlier for some version/distrib
+         * seems MySQL connection using mysqli driver get lost when fork.
+         * Need to unset it so that child process recreate it.
+         *
+         * @todo FIXME cleaner way to do it ?
+         */
+        global $_DB_DATAOBJECT;
+        unset($_DB_DATAOBJECT['CONNECTIONS']);
+
         $pid = pcntl_fork();
         if ($pid < 0) { // error
             common_log(LOG_ERR, "Could not fork.");
@@ -103,19 +124,6 @@ class Daemon
 
     function changeUser()
     {
-        $username = common_config('daemon', 'user');
-
-        if ($username) {
-            $user_info = posix_getpwnam($username);
-            if (!$user_info) {
-                common_log(LOG_WARNING,
-                           'Ignoring unknown user for daemon: ' . $username);
-            } else {
-                common_log(LOG_INFO, "Setting user to " . $username);
-                posix_setuid($user_info['uid']);
-            }
-        }
-
         $groupname = common_config('daemon', 'group');
 
         if ($groupname) {
@@ -128,6 +136,19 @@ class Daemon
                 posix_setgid($group_info['gid']);
             }
         }
+
+        $username = common_config('daemon', 'user');
+
+        if ($username) {
+            $user_info = posix_getpwnam($username);
+            if (!$user_info) {
+                common_log(LOG_WARNING,
+                           'Ignoring unknown user for daemon: ' . $username);
+            } else {
+                common_log(LOG_INFO, "Setting user to " . $username);
+                posix_setuid($user_info['uid']);
+            }
+        }
     }
 
     function runOnce()