2012-11-28 52 views
5

所以,我嘗試從url獲取curl的xml文件。事情是,文件是通過腳本生成的,這需要80到100秒,所以我的捲曲隨着超時錯誤而下降。下載xml時發生curl超時

URL看起來是這樣的:

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

我試圖設置CURLOPT_TIMEOUTCURLOPT_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); 

任何人有任何想法?

+0

你需要從服務器設置增加腳本執行時間限制。 –

+0

你有什麼樣的超時時間,你怎麼知道的?請提供詳細信息 – Ranty

+0

根據phpinfo(),執行時間被set_time_limit()覆蓋,但即使它不是 - 默認情況下它被設置爲180秒,這本身就足夠了。 – user976258

回答

1

我相信你可能會觸及默認情況下60秒的php.ini中的default_socket_timeout。

嘗試更改並查看它是否有效。如果沒有,請嘗試此操作。

$xml = file_get_contents($url); 

這樣做可以使用,你可以讀到這裏包裝:http://php.net/manual/en/wrappers.php

你會還需要確保供的file_get_contents使用所需的包裝紙在php.ini啓用(這通常是啓用所以你應該沒問題,但只是檢查確保)。

使用可能繞過如果超時被捲曲強制遇到超時並記得從60秒調整php.ini中的default_socket_timeout別的東西,我認爲可能是你的問題

的INI要檢查的設置

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

+0

@ user1834735,@VBAssassin中沒有這個函數對不起,你的意思是'file_get_contents()'?因爲我不知道'get_file_content()'的名字,所以我的Google也不知道它們。 'file_get_contents()'不會做到這一點。經過幾個小時與大多數辦公室的頭腦風暴後,我們得出結論認爲,這個問題是Apache配置,php.ini指令和厄運的罕見組合,所以我們這次與Pearl一起去​​,而且我正在關閉這個問題。但是,無論如何,感謝你們所有人,你們其實都很有幫助。 – user976258

+0

珍珠?你的意思是Perl? ;)更正了錯字。 「經過幾個小時與大多數辦公室的頭腦風暴」真的嗎?在這樣的事情上? :/是否沒有高級PHP開發人員作爲高級應該知道所有地方尋找這種問題。祝你好運:) – VBAssassin

+0

是的,Perl,麻煩。而且,是的,真的,在這樣的事情上。首先,我們實際上沒有一個高級PHP開發人員 - 真的 - 第二,這是一個非常無聊的一天,所以這對我們所有人來說都是一種娛樂:)謝謝,無論如何,祝您好運。 – user976258

0

URL是GET請求嗎?如果是這樣嘗試

$xml = get_file_content($url); 
+0

php – Piero