php - 如果某个进程或函数没有在固定时间内给出结果,我该如何跳过它?

标签 php timeout

在 PHP 中,我发现如果某个进程或函数未完成,那么包含该函数的整个应用程序就会因此而延迟。

假设有一个搜索函数,它返回大量结果,其中包含 20 多个函数。 “x”函数花费太多时间,因此结果页面会因此而延迟。我的问题是如何修复“X”功能的时间限制,例如 2 秒,如果在该时间内未完成,则应跳过“X”功能。

有什么办法可以做到这一点或更好吗?

最佳答案

所以,如果您正在谈论 file_get_contents (为什么不立即说出来?),您可以使用流上下文指定超时:

$ctx = stream_context_create(array(
    'http' => array(
        'timeout' => 10
        )
    )
);
file_get_contents("http://example.org/", 0, $ctx);

参见HTTP context options .

如果使用curl,请使用curl_setopt作为CURLOPT_TIMEOUT

curl_setopt($curl, CURLOPT_TIMEOUT, 10);

这会将超时设置为十秒。

关于php - 如果某个进程或函数没有在固定时间内给出结果,我该如何跳过它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3267361/

相关文章:

cmake - 如何覆盖 CMakeLists.txt 中的 Ctest 默认超时 1500

jquery - jQuery 的 ajax 默认超时值是多少?

未找到 PHPDox 文件

php - mysqli 函数 bind_result、store_result 和 fetch 之间有什么区别?

php - 使用不同数量的搜索关键字在数据库中搜索客户

iphone - UIWebView 加载请求 : continuously failing with NSURLErrorTimedout in iOS 6

javascript - 将 TimeOut 设置为 React 函数

ruby-on-rails - 如何配置nginx+Unicorn避免超时错误?

php - 向 % 的用户展示广告

php - 使用不同表中的关系复制 mysql 中的记录