2010-04-24 39 views
4

問題是每隔一段時間寫入一個會話的頁面都會導致Apache永久掛起以進行特定會話。一旦此用戶發生此錯誤,任何用戶的任何會話的任何進一步修改都將導致該用戶的網站掛起。導致Apache無限期掛起的PHP會話

這個問題一直是我唯一關注的日子。我有一個使用標準PHP會話處理程序運行Windows 2003和默認最新版本的XAMPP的開發VPS。有問題的代碼實際上通常運行在另外兩臺機器上,雖然我的常識說這是一個web服務器配置問題,但在這一點上,我願意嘗試任何東西。

在進一步調查中,Apache,PHP或系統事件日誌中沒有錯誤。資源豐富,不存在「AJAX垃圾風暴」,或者不止一對夫婦寫入每頁會話。我也儘可能地實現了session_write_close()來嘗試並幫助提升問題。

我檢查了設置爲「C:\ windows \ Temp」的會話目錄,發現一旦用戶進入掛起階段,相應的會話文件被獨佔鎖定,解決此問題的唯一方法是停止Apache並等待一會兒文件解鎖並刪除它們。我不知道是否需要刪除。

會話本身只包含4位信息。 ShoppingCartID,UserID,UserLevel和Refering URL,並且是偶爾用斜槓的字母數字。

我的php.ini的會話部分配置是這樣的:

session.save_handler = files 
session.save_path = "C:\WINDOWS\Temp" 
session.use_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 0 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 100 
session.gc_maxlifetime = 1440 
session.bug_compat_42 = 1 
session.bug_compat_warn = 1 
session.referer_check = 
session.entropy_length = 0 
session.entropy_file = 
session.cache_limiter = nocache 
session.cache_expire = 180 
session.use_trans_sid = 0 
session.hash_function = 0 
session.hash_bits_per_character = 4 

我已經試過所有我能想到的,現在整個問題是模糊了我。任何想法將不勝感激,並感謝您的閱讀時間:)

+0

不需要刪除會話文件。一旦apache重新啓動,你實際上可以繼續進行會話。 – Kmaid 2010-04-25 20:18:16

+0

我在Apache/Linux安裝上遇到完全相同的問題,您是否曾找到解決方案? – Rowan 2010-07-26 12:55:23

+0

是的,我做了新的安裝一切都很好>> – Kmaid 2010-11-24 23:28:53

回答

1

它可能是您的會話文件被Windows鎖定或某些php.ini設置未正確完成。請SEE HERE

幾乎要說它的鎖文件。

+0

除了save_path之外,php會話設置是默認設置,這只是共享服務器上的安全風險,事實並非如此。 – Kmaid 2010-04-25 20:15:07

0

您的應用程序可能在內部再次從內部請求同一網站的頁面嗎?你可能會遇到A頁面啓動的爭用情況,鎖定會話,然後以某種方式觸發對自己的請求,或頁面B,它也嘗試重新啓動會話,該會話現在被鎖定,並且請求掛起。

否則,如果掛是由會話文件被鎖定,我建議使用像SYSInternal的「Handle」的東西來獲得哪些進程正在使用有問題的會話文件的列表。

+0

這是不可能的。有幾個包含但不包含包含,並且設置了最大執行時間。 我99%肯定它的apache或PHP,當它停止並啓動apache服務後,它就會鎖定它。無論如何我會驗證這一點。 – Kmaid 2010-04-25 15:59:29

+1

我也有過這個問題Marc B.我沒有找到工作,我使用的是centos/unix。我只是改變了我的應用程序,以便它不使用該部分的會話 – Jason 2011-02-14 23:48:05

+0

這也是我解決我的問題的方式。反思會議經理可能值得嘗試memcache – Kmaid 2012-02-28 14:23:29