2012-04-13 115 views
0

出於某種原因,有時,我從我的PHP代碼共享的服務器上運行時得到以下致命錯誤:會話重新生成ID超出最長執行時間?

Fatal error: Maximum execution time of 30 seconds exceeded in C:\HostingSpaces[username][subdomain]\wwwroot\index.php on line 8

這行就是:

session_regenerate_id(); 

也許這個問題是從共享服務器上託管的代碼和資源不可用?還是有其他原因造成這個問題?

由於它是共享服務器,我無法更改任何PHP設置。

編輯:

唯一線線8之前幾個require_once線模型對象。唯一的其他行是session_start()

我檢查了我的PHP設置,它指出session.save_handler是本地值和主值的文件。由於它正在使用文件,可能問題是試圖從磁盤讀取和寫入?

+0

您的會話是基於文件還是基於數據庫? – 2012-04-13 04:43:32

+0

我怎麼知道? – Ivan 2012-04-13 15:34:27

+2

你能提供更多的代碼嗎?也許第8行之前的行? 會話處理程序默認使用文件。你可以通過查看你的'phpinfo();'來複查。 (查找「session.save_handler」。) – ghbarratt 2012-04-13 15:59:11

回答

1

我認爲你的問題可能是你懷疑的性能和資源問題,但我覺得奇怪的是,它只停在第8行。我猜如果其餘代碼是機會可能很高非常小。

您是否嘗試更改代碼以嘗試讓超時發生在不同的行上?例如,您可以嘗試添加sleep(25);,然後查看該行是否發生致命超時。

另外,你確定你不能設置最大執行時間限制嗎?我懷疑,即使你不能改變共享php.ini中,您可以通過其他的選擇一個設置max_execution_time

我相信max_execution_time值/參數是秒,如果你把它設置爲0(零),則沒有執行時間限制使用ini_set and max_execution_time將會被使用。 (無論您認爲使用零是否安全都取決於您。)