本文整理汇总了PHP中Daemon::halt方法的典型用法代码示例。如果您正苦于以下问题:PHP Daemon::halt方法的具体用法?PHP Daemon::halt怎么用?PHP Daemon::halt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Daemon
的用法示例。
在下文中一共展示了Daemon::halt方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _daemonize
private static function _daemonize($iSecondsToSleep = 10, $fHandler = null)
{
set_time_limit(0);
declare (ticks=1);
if (self::doesKeyExist("--do-not-daemonize") or self::doesKeyExist("--dnd")) {
self::log("Daemonization is turned off. We will perform only one iteration of the main loop.");
return;
}
$sPIDFile = self::getPIDFileName();
if (self::doesKeyExist("--kill")) {
if (file_exists($sPIDFile) and is_readable($sPIDFile)) {
$iPid = file_get_contents($sPIDFile);
if (posix_kill($iPid, SIGTERM)) {
self::log("SIGTERM was sent.");
} else {
self::log("Unable to send SIGTERM.", Daemon::PHP_MESSAGE);
}
if (is_writable($sPIDFile)) {
unlink($sPIDFile);
} else {
self::log("Unable to unlink PID ({$sPIDFile}).", Daemon::PHP_MESSAGE);
}
} else {
self::log("There is no PID ({$sPIDFile}).", Daemon::PHP_MESSAGE);
}
die;
}
$iChildPid = pcntl_fork();
if ($iChildPid) {
/* shut down the parent process */
die;
}
/* the child process will be main */
posix_setsid();
/* sleep in order to parent process will be completely unloaded */
sleep(1);
/* signal handler */
if (!$fHandler) {
$fHandler = function ($iSignal) {
switch ($iSignal) {
case SIGTERM:
Daemon::log("Daemon " . Daemon::getCurrentScriptBasename() . " has received SIGTERM.");
Daemon::halt('SIGTERM');
break;
}
};
}
if (!pcntl_signal(SIGTERM, $fHandler)) {
self::log("Unable to set signal handler.");
die;
}
if ($iSecondsToSleep < 0) {
$iSecondsToSleep = 0;
}
self::$iMicroSecondsToSleep = $iSecondsToSleep * 1000000.0;
}