簡體   English   中英

PHP 5.6會話+ Memcache(d)

[英]PHP 5.6 Sessions + Memcache(d)

我有一個奇怪的問題,因為我已經將PHP從5.4升級到5.6。 我自己從來沒有見過這個錯誤,但每天都記錄下這條消息:

session_write_close():無法寫入會話數據(memcached)。 請驗證session.save_path的當前設置是否正確(127.0.0.1:11211)

這並不總是發生,但僅限於某些用戶。 這發生在三台不同的服務器上,這些服務器在最新的Debian上有PHP~5.6和Memcached。 我已經嘗試將Memcached擴展切換到Memcache(當然在php.ini中更改save_handler),問題仍然存在。 我也試過在php.ini中禁用會話鎖。 問題肯定與PHP有關,因為我已經使用Perl腳本測試了Memcached守護程序本身,並且沒有一個連接錯誤。

一切都在很長一段時間內完美運行,我在PHP升級后就開始遇到這個問題了,所以它與memcached配置無關,或類似的東西。 也許我錯過了什么? 也許5.6在其ini文件中需要一些額外的配置? 我只是想不通。

目前我有點陷入困境,我希望有人能幫助我提出建議。 我可以嘗試切換回5.4或5.5,但這不是一個真正的選擇,我真的想堅持5.6。

php, memcachememcached有2個擴展。

memcached擴展基於libmemcache,無論如何你應該更喜歡它。

根據我的經驗,當前版本的memcache守護進程與memcache擴展不兼容。 存儲數據有效,但是我遇到了在第一次請求之后將數據寫入會話的重大性能問題(第一次請求全新會話很好而且速度很快,每次后續請求都需要10秒鍾!)。 memcached替換memcache修復了這個特殊問題。

警告memcached的 session.save_path語法略有不同。 我不得不省略tcp://或者它不起作用

所以對於memcached使用:

session.save_path = "127.0.0.1:11211"

對於memcache使用:

session.save_path = "tcp://127.0.0.1:11211"

請確保你在php.ini中的會話是這樣的。

session.save_path = "tcp://127.0.0.1:11211"

或者用於unix套接字

session.save_path = "unix:///var/run/memcached.sock"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM