2010-04-21 120 views
3

完全被這一個困惑...session_start()掛起服務器

我們有一個WAMPServer安裝設置,從各種文檔根目錄運行一些虛擬主機。

就在最近,一個特定的域已經開始掛起服務器。我們將其追溯到session_start()。如果我們將它評論出來,那就沒有問題了(當然,除非我們在會議中無法做任何事情)。沒有註釋的話,它會掛起頁面加載,並且在重新加載的情況下會掛起整個服務器。

所有其他網站仍然完美地與他們的會話。據我所知,會議正在進行的方式沒有什麼不同。我正在進一步尋找它(以防有人改變了一些東西),但現在我希望有一些方向:)

那麼,有什麼想法?

+0

權限錯誤是最有可能的,但是,也許代碼包含一個自定義會話處理程序。檢查session_set_save_handler的代碼。自定義會話命令可能存在問題。 – 2010-04-21 02:09:14

+0

你有任何長期運行的PHP腳本,使用會話? – goat 2010-04-21 03:43:48

+0

@chris:沒有長時間運行的腳本,@Don:會看看自定義會話處理程序,謝謝。 – Narcissus 2010-04-21 10:54:45

回答

2

所以,我猜測這是一個應用層問題,因爲其他網站的會話正常工作。但是,這假定他們的會話配置方式相同 - 通過仔細檢查您的網站在其配置中與其他網站相比沒有做一些「獨特」配置,從而節省了一些時間。

我接下來會檢查在您的應用程序中運行的其他與會話相關的代碼。這可能是通過調用session_start()將應用程序置於其將運行其他代碼的狀態。例如,可能有一段代碼表示「只有在設置此會話變量時才運行此函數」,並且通過啓動會話來暴露該變量,在那裏它不會被暴露,因此不會運行有問題的函數如果會話未開始。

祝你好運。

+0

你是完全正確的,因爲會話導致會話變量存在其他地方,並從那裏,該變量是最終是什麼問題......感謝評論,因爲它推動了我的大腦! – Narcissus 2010-04-21 18:03:01

+0

太棒了 - 很高興聽到我的幫助。 :-) – 2010-04-21 18:11:11

0

如果您使用基於文件的會話,我的第一個猜測將是文件權限。如果您正在使用數據庫會話,那麼我會檢查以確保表格沒有損壞。另外,它是Apache,PHP或其他被鎖定的東西嗎?

0

有可能您在底層基礎架構中發現了一個您無法解決的錯誤。在嘗試診斷此問題之前,您至少應該清除所有現有會話。