PHP OCI连接忽略SIGINT(ctrl-c)

时间:2017-01-23 16:37:00

标签: php oracle oci

我的php OCI8模块存在问题。

我有一个php工作人员处理一些东西,我意识到一旦有一个开放的oci连接,php脚本会忽略任何中断信号:

<?php

$db = oci_connect(...);

while (true) {
    // do something
}

没有办法优雅地停止此脚本。至少我知道。 我已经尝试使用pcntl_signal()来创建我的自定义信号处理程序,虽然不会工作。 现在我需要手动终止这个过程。

任何人都有此问题或使用oci处理SIGINT的方法吗?

喝彩!

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码:

declare(ticks=1); //mandatory
oci_connect(...);

pcntl_signal(SIGINT, 'sig_handler'); //set handler for signal

$i = 0;
while(true) {
    echo $i;
    $i++;
}

//will handle the ctrl+c. Put whatever you want to do
function sig_handler() {
    echo "DIE DIE DIE!";
    die();
}

更多信息:http://php.net/manual/en/function.pcntl-signal.php