函数超时后输出消息


Output message after function timeout

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

我已经找到set_time_limit()函数,但我不认为我使用它的权利。

I have try…

... 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 ...

这是我能想出的最好的办法,但是行不通。你有什么建议吗?

set_time_limit限制脚本时间,脚本将在此时间后结束,之后不会执行任何代码

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

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

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

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