您的位置:首页 > 运维架构 > Linux

PHP后台程序对LINUX信号的处理

2010-04-30 16:41 218 查看
PHP在运行的时候,直接kill掉,有肯能造成数据的丢失。幸好php模块,有针对signal的处理。

处理方式,首先检查有没有安装 PCNTL 模块

然后可以在一个包含文件中,添加以下代码

global $exitFlag;

$exitFlag = false;

// 增加linux信号量处理

if (DIRECTORY_SEPARATOR != '//') {

pcntl_signal(SIGTERM, "sig_handler");

pcntl_signal(SIGHUP, "sig_handler");

pcntl_signal(SIGINT, "sig_handler");

}

// 信号处理函数

function sig_handler($signo)

{

global $exitFlag;

echo "signal handler.../n";

switch ($signo) {

case SIGTERM :

case SIGHUP :

case SIGINT :

$exitFlag = true;

break;

default :

// handle all other signals

}

}

最后一个注意点: 在你所运行的php主文件里,添加一行

declare(ticks = 1);

否则这个信号处理是不起作用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: