首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中设置Curl的超时

在PHP中设置Curl的超时
EN

Stack Overflow用户
提问于 2010-04-06 09:03:01
回答 4查看 445.2K关注 0票数 261

我通过php在eXist数据库上运行curl请求。数据集非常大,因此,数据库始终需要很长时间才能返回XML响应。为了解决这个问题,我们设置了一个curl请求,并设置了一个很长的超时。

$ch = curl_init();
$headers["Content-Length"] = strlen($postString);
$headers["User-Agent"] = "Curl/1.0";

curl_setopt($ch, CURLOPT_URL, $requestUrl);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'admin:');
curl_setopt($ch,CURLOPT_TIMEOUT,1000);
$response = curl_exec($ch);
curl_close($ch);

但是,curl请求始终在请求完成之前结束(通过浏览器请求时<1000)。有没有人知道这是不是在curl中设置超时的正确方式?

EN

回答 4

Stack Overflow用户

发布于 2012-06-17 03:25:54

请参阅文档:http://www.php.net/manual/en/function.curl-setopt.php

CURLOPT_CONNECTTIMEOUT -尝试连接时等待的秒数。使用0可以无限期等待。

CURLOPT_TIMEOUT -允许执行cURL函数的最大秒数。

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds

也不要忘了放大php脚本本身的执行时间:

set_time_limit(0);// to infinity for example
票数 390
EN

Stack Overflow用户

发布于 2010-04-06 09:10:31

嗯,在我看来,CURLOPT_TIMEOUT定义了任何cURL函数执行所需的时间。我认为你实际上应该看CURLOPT_CONNECTTIMEOUT,因为它告诉cURL等待连接完成的最大时间。

票数 59
EN

Stack Overflow用户

发布于 2010-04-06 09:33:08

您不能从浏览器运行请求,它将在等待运行CURL请求的服务器响应时超时。浏览器可能在1-2分钟后超时,这是默认的网络超时时间。

您需要从命令行/终端运行它。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2582057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档