5

所以,我尝试从 url 获取带有 curl 的 xml 文件。问题是,文件是通过脚本按需生成的,这需要 80-100 秒,所以我的 curl 因超时错误而脱落。

网址看起来像这样:

https://domain/mancgi/report?params&out=xml

我尝试设置CURLOPT_TIMEOUTand CURLOPT_CONNECTTIMEOUT,以及set_time_limit()脚本本身(工作正常),但没有任何改变 - 仍然超时。

卷曲代码如下所示:

set_time_limit(1000);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($curl, CURLOPT_TIMEOUT, 300); 
$xml = curl_exec($curl);

有人有什么想法吗?

4

2 回答 2

1

我相信你可能会点击 php.ini 中的 default_socket_timeout,默认为 60 秒。

尝试改变,看看它是否有效。如果没有,试试这个。

$xml = file_get_contents($url);

这样做将使用您可以在此处阅读的包装器:http: //php.net/manual/en/wrappers.php

而且您还需要确保在 php.ini 中启用了 file_get_contents 所需的包装器(通常是启用的,所以您应该没问题,但只需检查以确保)。

如果超时由 CURL 强制执行,使用它可能会绕过您遇到的超时,并记住将 php.ini 中的 default_socket_timeout 从 60 秒调整为我认为可能是您的问题的其他值

要检查的 INI 设置

http://php.net/manual/en/filesystem.configuration.php

于 2012-11-28T16:00:59.700 回答
0

URL 是 GET 请求吗?如果是这样试试

$xml = get_file_content($url);
于 2012-11-28T15:27:27.480 回答