X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fdaemon.php;h=eaeecc10589531325cd2506fbd421300ad11a2f4;hb=eb955fe6294fc4f256001bb8324ff73c2b9cd362;hp=9d89c63e781eb2e25353c5501850510cb87cc612;hpb=dd1fc46f0986e5675d24208199b88150f643925d;p=quix0rs-gnu-social.git diff --git a/lib/daemon.php b/lib/daemon.php index 9d89c63e78..eaeecc1058 100644 --- a/lib/daemon.php +++ b/lib/daemon.php @@ -1,7 +1,7 @@ . */ -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()