功能超时后输出消息

时间:2013-05-31 14:54:38

标签: php opencart 3d-secure

我有一个需要超时的函数并输出错误信息。

我找到了set_time_limit()函数,但我不认为我正在使用它。

我试过......

... some code ...

set_time_limit(12);

$client->sendHttp(URL, TIMEOUT_CONNECT, TIMEOUT_READ);

if (set_time_limit(12) != true){
    $_SESSION['Message'] = "Transaction Timed Out!";
}
... some code ...

这是我能想出来的最好但却不起作用。你能提出什么建议吗?

2 个答案:

答案 0 :(得分:1)

set_time_limit限制脚本的时间,所有脚本将在那段时间后结束,之后不会执行任何代码

$client->sendHttp应返回false,如果已达到超时,则返回null,阅读该函数的文档以查看它实际返回的内容。

答案 1 :(得分:1)

通常,如果脚本超时,Web服务器会停止它并返回错误,而您自己只有一点点机会处理它 - 通过定义shutdown function

但你可以使用你自己的一个简单函数,就像这个:

function check_timeout($start) {
    if(microtime() <= $start + MAX_EXECUTION_TIME)
        return true;

    return false;
}

MAX_EXECUTION_TIME常量将被定义为

define('MAX_EXECUTION_TIME', 10000); // 10 seconds

现在您的代码中的某处可以执行:

// some code...

$start = microtime();

foreach($array as $key => $value) {
    if(check_timeout($start)) {
        // do something
    } else {
        // set HTTP header, throw exception, etc.
        // return false; // die; // exit;
    }
}