$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