我們在Nginx下設置了PHP5 FPM。我們使用Memcached作爲會話處理程序。由Memcached處理的PHP會話仍在磁盤上
session.save_handler=memcached
我的期望是,沒有失敗(儘管像我們的Memcached服務器的死亡一些致命錯誤),所有會議應使它到Memcached的和明確的而不是磁盤。
但是,在檢查我們的應用程序後,我在/var/lib/php5/fpm/
上找到了有關Memcached AND的會話。
一些故障排除:
- 我們肯定混得Memcached的設置新的會話。但是,我在磁盤上找到的某些會話未出現在Memcached上
- 基於文件的會話的時間戳肯定是最近的 - 當前分鐘中有文件。
- 這些文件的權限是安裝用戶權限 - 而不是root權限。
儘管具有所述點3的上方,有SOME文件具有根用戶和組所有權。我覺得這很奇怪。爲什麼會有由root擁有的會話?這意味着任何人試圖檢查文件(有0600權限btw)將失敗。
所以,我想我的問題等同於:
- 是否有在新的會話文件儘管我們使用Memcached的在磁盤上創建它是有效的任何情況?
- 任何想法爲什麼我們會擁有擁有root權限的會話文件?
對於背景:我研究很零星的會話過期的問題。在增加Memcached內存限制和併發連接(並最終修復大量實例)後,我們仍然遇到少量會話到期。無論如何,這只是上下文 - 可能並不重要。
你有任何php-cli cronjob? –
@AlexBlex - 是的,他們中的一些橫跨一些用戶。想想可能是吧?因此,打到代碼庫的PHP cron作業會創建碰到文件系統的會話? –
@AlexBlex - 在你的問題背面,還運行了'php -i | grep save_handler'。輸出是'session.save_handler => files => files'。所以,如果運行cronjobs會導致會話被創建,那麼這是有道理的。思考? –