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

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);


否则这个信号处理是不起作用的。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章