簡體   English   中英

寫入會話數據失敗,php和memcached

[英]Failed to write session data, php and memcached

我最近嘗試在 php 中實現 memcached 以保存會話。 我在我的 php.ini 中修改了 session.save_handler 並且在大多數情況下它可以正常工作。 會話保存在其中。 但是,有時我會在某些會話中收到這條奇怪的消息:

PHP 警告:未知:無法寫入會話數據 (memcached)。 請驗證 session.save_path 的當前設置在第 0 行的 Unknown 中是否正確 (xxxx:11211)。

會話數據是相同的,低於 memcached 的 1MB 障礙,我還沒有看到此消息出現的模式......也許每分鍾幾次。 該網站通常處於中等負載,同時有 150 個用戶。

如果您使用的是內存緩存,那么save_path必須具有tcp://前綴。

如果您使用的是memcached,那么save_path不應該有tcp://前綴。

答案是 Memcached 對象最大可以為 1MB(默認)

如果您的數組或對象超過此限制,該對象將被神奇地刪除:)

你會話中的所有項目都將被刪除,只是這樣說是因為此時此刻我已經親身體驗過了

我通過像這樣啟動 Memcached Session 服務器來解決它

memcached -I 10m

我相信這與使用 memcached 擴展有關並且它沒有在會話之前初始化。 我切換到使用 memcache 擴展而不是 memcached 擴展並且它有效。

session.save_handler = memcache
session.save_path="tcp://192.168.1.103:11211"

我在 docker-compose 堆棧上遇到了與 symfony2 和 memcached 類似的問題。

錯誤指出:

警告:無法寫入會話數據(用戶)。 請驗證 session.save_path 的當前設置是否正確

問題是我有一個過時的./app/config/parameters.yml

檢查您的 memchached 設置以滿足您的需求,例如:

parameters:
    session_memcached.host: '%session_memcached_host%'
    session_memcached.port: '%session_memcached_port%'
    session_memcached.prefix: '%session_memcached_prefix%'
    session_memcached.expire: '%session_memcached_expire%'

暫無
暫無

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

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