©
本文档使用 PHP中文网手册 发布
这个示例用于产生一个守护进程并可以通过信号处理进行关闭。
Example #1 进程控制示例
<?php
//定义ticks
declare( ticks = 1 );
//产生子进程分支
$pid = pcntl_fork ();
if ( $pid == - 1 ) {
die( "could not fork" ); //pcntl_fork返回-1标明创建子进程失败
} else if ( $pid ) {
exit(); //父进程中pcntl_fork返回创建的子进程进程号
} else {
// 子进程pcntl_fork返回的时0
}
// 从当前终端分离
if ( posix_setsid () == - 1 ) {
die( "could not detach from terminal" );
}
// 安装信号处理器
pcntl_signal ( SIGTERM , "sig_handler" );
pcntl_signal ( SIGHUP , "sig_handler" );
// 执行无限循环任务
while ( 1 ) {
// do something interesting here
}
function sig_handler ( $signo )
{
switch ( $signo ) {
case SIGTERM :
// 处理中断信号
exit;
break;
case SIGHUP :
// 处理重启信号
break;
default:
// 处理所有其他信号
}
}
?>