2013-03-10 183 views
1

我有一個與我的主機設置超時方面的問題,但實際上我不知道究竟是哪一個負責。當我在PHP頁面運行這段代碼:睡眠()超時

<?PHP sleep(30); echo "Done"; ?>

它給了我"tcp error operation timeout"

但是,當我將它更改爲sleep(20)它成功運行。所以請幫助我找出我的PHP ini文件中的哪個項目對此超時負責。然而,我試圖谷歌它,並已嘗試了很多建議,但沒有運氣,最後我堅持在這一點讓我的PHP腳本上線。

+1

可能是你應該嘗試改變腳本void set_time_limit(int $ seconds)的時間限制,如果我沒有錯,它默認爲30秒 – MatRt 2013-03-10 21:26:54

+0

嘗試增加set_time_limit超時時間() – Sam 2013-03-10 21:27:22

+0

我不認爲這是PHP正在達到的時間限制。首先,除非你在Windows主機上,否則它只會在PHP正在執行時進行測量,我非常確定'sleep'不會對此產生貢獻。其次,這不是它給出的錯誤信息。 – IMSoP 2013-03-10 21:29:09

回答

0

看看你的配置中的時間限制。

您可以使用此行代碼modifiy腳本的時間限制:

set_time_limit(60); 

默認值id 30s。如果您在使用不帶參數的set_time_limit()時,它將重置計數器,並且總可用時間將增加30秒。

看看基於錯誤信息的文檔set_time_limit documentation

+0

我發現只有3個項目正在處理我的服務器
'default_socket_timeout = 60','mysql.connect_timeout = 10'和'pfpro.defaulttimeout = 30'上的超時問題並找到也是這個配置''; disable_functions = *****,set_time_limit,******' – Amro 2013-03-10 21:30:59

+0

@ user2151383 pice這些都不是你的腳本運行多長時間 - mysql是一個數據庫,一個「套接字「是用來從其他腳本檢索數據的東西,並且」pfpro「似乎不再存在。 – IMSoP 2013-03-10 21:39:17

+0

我有一個很長的PHP循環腳本,消耗了大量的時間,這就是爲什麼我關心執行時間 – Amro 2013-03-10 21:40:55

2

,我懷疑這是不是PHP超時,但實際的Web服務器「拔插頭」(雖然30秒一個可笑短的時間限制)。

這當然不是正常的PHP錯誤消息,並且您不應該使用sleep來誘發PHP超時,因爲它沒有使用實際的CPU時間。

不知道你在什麼類型的主機下運行(Apache?Nginx?IIS?共享主機?VPS?等),很難知道在哪裏,甚至是否可以改變這種情況。

+0

我的託管設置顯示:'託管OS =>專有* nix' – Amro 2013-03-10 21:37:56

+0

@ user2151383可能值得詢問誰在運行您的託管服務。 – IMSoP 2013-03-10 21:41:48

+0

因此,我的PHP ini文件沒有任何更多?? !! – Amro 2013-03-10 21:44:18

0

30秒是默認的php超時,如果你需要sleep(30)你必須增加超時時間,有2種方法可以改變它,從php腳本。

set_time_limit (int $seconds);

OR

ini_set('max_execution_time', int $seconds);

+0

我曾嘗試過,但不幸沒有運氣 – Amro 2013-03-10 22:06:14

+0

服務器是遠程/託管?或本地? – 2013-03-10 22:06:51

+0

例如嘗試ini_set('max_execution_time',45);結果怎麼樣? – 2013-03-10 22:07:26

0

我想與大家分享這個答案與每一個誰正在尋找類似的問題。花了幾個小時尋找根本原因後,最後我發現沒有改變任何一段代碼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真的我不知道。無論如何,錯誤可能不會在代碼中找到。