2010-02-10 98 views
0

我們有一個腳本,它從遠程服務器提取一些XML。如果此腳本在除生產以外的任何服務器上運行,則它可以工作。PHP/cURL問題打開遠程文件

然後將其上傳到生產,但它失敗。它正在使用cURL來處理請求,但不管我們怎麼做 - fopen,file_get_contents,套接字 - 它只是超時。如果我使用Python腳本來請求URL,也會發生這種情況。

與其他URL一起提供的相同腳本用於查詢,每次都適用。顯然,它不會返回我們正在查找的XML,但它會返回SOMETHINg - 它可以連接到遠程服務器。

如果通過命令行使用例如curl或wget再次請求此URL,則會返回數據。這不是我們正在尋找的數據(事實上,它返回一個空的根元素),但有些東西會回來。有趣的是,如果我們從URL中刪除查詢字符串元素(完整的URL有7個查詢字符串元素並且總共運行約450個字符),那麼腳本將返回相同的空XML響應。查詢字符串的某些組合將再次導致腳本超時。

這個,你可以想象得到,我完全困惑 - 它似乎適用於任何情況,除了它需要工作。我們可以在我們的開發服務器上得到響應,我們可以得到對命令的響應如果我們放棄某些QS元素,我們可以得到響應 - 我們無法通過LIVE服務器上的正確URL獲得我們想要的響應。

有沒有人有任何建議?我在我的智慧結束!

+0

什麼是操作系統?這聽起來像是一個外部庫的問題。 – Matt 2010-02-10 13:00:08

+0

沒有什麼比展示您的代碼示例更好! – ghostdog74 2010-02-10 13:00:35

+0

服務器是Apache 2.2.10和PHP 5.2.6。 有問題的代碼在這裏:http://pastebin.com/m1242fa04儘管它的大部分是直接從雅虎提供給我們的,我只是爲了調試目的而做了一些修改。 – 2010-02-10 13:04:12

回答

1

運行Wireshark並查看請求走多遠。可能是防火牆問題,DNS解決問題等等。

另外,試着將你的捲曲超時值調高一些,比如300s,然後看看它是如何發生的。