예제 #1
0
        $user = posix_getpwnam($config["SMStoXMPP"]["app_user"]);
        @posix_setuid($user['uid']);
        $group = posix_getgrnam($config["SMStoXMPP"]["app_group"]);
        @posix_setgid($group['gid']);
    }
    // handle posix signals in a sane way
    pcntl_signal(SIGTERM, "sig_handler_child", false);
    pcntl_signal(SIGHUP, "sig_handler_child", false);
    pcntl_signal(SIGINT, "sig_handler_child", false);
    pcntl_signal(SIGUSR1, "sig_handler_child", false);
    // blocking write of logs
    while (true) {
        // garbage collect, needed for long running scripts
        gc_collect_cycles();
        // blocking wait for log messages
        $log->write_fromqueue($blocking = true);
    }
    // terminate
    // in reality, we will never get here - SIGTERM will kill
    // the above block and then just stop this fork & GC.
    exit;
} else {
    /*
    	We are the parent process
    	
    	Create a new logger object, we need to log via the IPC
    	message queue, rather than into the same text log file
    	and ending up with write clashes.
    
    	Note: we don't do print to STDOUT here, it's something
    	that the logger process will do for us - although there's no