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);
否則這個信號處理是不起作用的。