我有一個與我的主機設置超時方面的問題,但實際上我不知道究竟是哪一個負責。當我在PHP頁面運行這段代碼:睡眠()超時
<?PHP sleep(30); echo "Done"; ?>
它給了我"tcp error operation timeout"
。
但是,當我將它更改爲sleep(20)
它成功運行。所以請幫助我找出我的PHP ini文件中的哪個項目對此超時負責。然而,我試圖谷歌它,並已嘗試了很多建議,但沒有運氣,最後我堅持在這一點讓我的PHP腳本上線。
我有一個與我的主機設置超時方面的問題,但實際上我不知道究竟是哪一個負責。當我在PHP頁面運行這段代碼:睡眠()超時
<?PHP sleep(30); echo "Done"; ?>
它給了我"tcp error operation timeout"
。
但是,當我將它更改爲sleep(20)
它成功運行。所以請幫助我找出我的PHP ini文件中的哪個項目對此超時負責。然而,我試圖谷歌它,並已嘗試了很多建議,但沒有運氣,最後我堅持在這一點讓我的PHP腳本上線。
看看你的配置中的時間限制。
您可以使用此行代碼modifiy腳本的時間限制:
set_time_limit(60);
默認值id 30s
。如果您在使用不帶參數的set_time_limit()時,它將重置計數器,並且總可用時間將增加30秒。
看看基於錯誤信息的文檔set_time_limit documentation
我發現只有3個項目正在處理我的服務器
'default_socket_timeout = 60','mysql.connect_timeout = 10'和'pfpro.defaulttimeout = 30'上的超時問題並找到也是這個配置''; disable_functions = *****,set_time_limit,******' –
Amro
2013-03-10 21:30:59
@ user2151383 pice這些都不是你的腳本運行多長時間 - mysql是一個數據庫,一個「套接字「是用來從其他腳本檢索數據的東西,並且」pfpro「似乎不再存在。 – IMSoP 2013-03-10 21:39:17
我有一個很長的PHP循環腳本,消耗了大量的時間,這就是爲什麼我關心執行時間 – Amro 2013-03-10 21:40:55
,我懷疑這是不是PHP超時,但實際的Web服務器「拔插頭」(雖然30秒一個可笑短的時間限制)。
這當然不是正常的PHP錯誤消息,並且您不應該使用sleep
來誘發PHP超時,因爲它沒有使用實際的CPU時間。
不知道你在什麼類型的主機下運行(Apache?Nginx?IIS?共享主機?VPS?等),很難知道在哪裏,甚至是否可以改變這種情況。
30秒是默認的php超時,如果你需要sleep(30)
你必須增加超時時間,有2種方法可以改變它,從php腳本。
set_time_limit (int $seconds);
OR
ini_set('max_execution_time', int $seconds);
我曾嘗試過,但不幸沒有運氣 – Amro 2013-03-10 22:06:14
服務器是遠程/託管?或本地? – 2013-03-10 22:06:51
例如嘗試ini_set('max_execution_time',45);結果怎麼樣? – 2013-03-10 22:07:26
我想與大家分享這個答案與每一個誰正在尋找類似的問題。花了幾個小時尋找根本原因後,最後我發現沒有改變任何一段代碼Network Error (tcp_error) A communication error occurred: "Operation timed out"
錯誤disappeared when i ran my script on another machine
,因此the issue was with either my machine or my internet speed
真的我不知道。無論如何,錯誤可能不會在代碼中找到。
可能是你應該嘗試改變腳本void set_time_limit(int $ seconds)的時間限制,如果我沒有錯,它默認爲30秒 – MatRt 2013-03-10 21:26:54
嘗試增加set_time_limit超時時間() – Sam 2013-03-10 21:27:22
我不認爲這是PHP正在達到的時間限制。首先,除非你在Windows主機上,否則它只會在PHP正在執行時進行測量,我非常確定'sleep'不會對此產生貢獻。其次,這不是它給出的錯誤信息。 – IMSoP 2013-03-10 21:29:09