2012-09-11 56 views
3

在我的代碼我有一個包含語句,從外部URL負載代碼,它看起來像這樣:包含/要求failes默默

include 'http://123.123.123.123:8080/servlet/statemodel' 

的問題是,該servlet需要大約35秒鐘加載。

如果我在我的瀏覽器中訪問http://123.123.123.123:8080/servlet/statemodel,一切工作正常(我修改了IP,因爲它無法通過互聯網訪問)。

然而,使用iclude語句PHP會嘗試大約20秒來包含該文件,然後繼續執行include語句之後的代碼。

沒有錯誤信息。同樣使用require不會帶來錯誤信息。

包含超時嗎?爲什麼沒有錯誤信息?

也許tomcat實際上會發送數據(http-header),但是PHP對於一些內容只能等待大約20秒?

我可以選擇更改此超時嗎?

+0

是在你的'php.ini'中的設置:'allow_url_include = 1'? –

+0

error_reporting(E_ALL); ini_set('display_errors','1');怎麼樣 ? ;-) –

+0

你想包括什麼?什麼文件類型? –

回答

5

您用這個超時:

ini_set("default_socket_timeout", $value); 

但默認值是60秒,這應該是綽綽有餘。

也許你可以找到更多有:

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

IMO最乾淨的解決辦法是到servlet的內容與服務你的PHP腳本的HTML後一個AJAX請求加載。這樣用戶可以獲得快速結果,並且可以向他顯示正在加載更多內容。

+0

Ajax解決方案聽起來是最好的方法。仍然我會嘗試default_socket_timeout設置,如果error_reporting E_ALL給了我更多信息。謝謝。 – JochenJung