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


否則這個信號處理是不起作用的。




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