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


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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值