當前位置:成語大全網 - 書法字典 - 如何將PHP會話信息緩存到memcached中?

如何將PHP會話信息緩存到memcached中?

壹、場景介紹

當用戶使用PHP構建網站時,會在$_SESSION全局變量中存儲壹些信息,這些信息很容易被訪問。PHP的ini配置文件中提供了與[Session]相關的配置,它可以支持將信息保存到文件或memcached服務器。由配置項session.save_handler = memcached確定。在大多數場景下,會話數據不需要持久化,為了提高網站的性能,會話信息會緩存在memcached中。

第二,問題

現在問題來了。已知阿裏雲中的OCS是實現標準memcached協議的緩存。用戶壹方面想減少對服務器的內存占用,另壹方面又想把session的存儲從自建的memcached遷移到OCS,又不想重寫代碼。我在切換的過程中遇到過問題,希望這篇文章能幫到妳。

首先明確OCS和自建memcached的區別,兩者都實現了標準的memcached協議。但OCS是壹個分布式集群,以統壹的方式向外界提供服務,實現負載均衡,無單點故障。用戶可以自由、動態地調整他們的配置,而無需重啟服務。既然是對外提供服務,就有相應的安全機制,比如白名單、流量控制、賬號密碼認證等。與自建memcached相比,這裏最重要的區別是“賬號密碼認證”,因為大部分用戶自建memcached時不需要設置賬號密碼,而且與OCS相比,少了SASL認證過程。然後用戶需要在php.ini中配置賬號密碼,將session的存儲從自建的memcached遷移到OCS。

第三,解決

舊版php memcached擴展不支持1,需要將php memcached擴展升級到2.2.0版本。重新按照阿裏雲OCS官網教程HZALICM 10 pub 001 . OCS . aliyuncs . com:1111”(註意帶D的擴展名,之前不需要加tcp://但不帶D的擴展名需要加)。

修改memcached中緩存的鍵的時間。

session . GC _ max lifetime = 1440(以秒為單位,強烈建議必須設置壹個合理的時間,以確保OCS始終只緩存熱數據)。

3.2 memcached段

在php.ini的global部分,創建壹個單獨的部分[memcached],然後在空白處添加以下配置。

[memcached]

memcached.use_sasl = On

memcached.sess_binary = On

memcached . sess _ sasl _ username = " your _ OCS _ name "

memcached . sess _ sasl _ password = " your _ OCS _ password "

memcached.sess_locking = Off

安裝步驟完成後,有關memcached段和會話段的其他有用參數,請參考以下鏈接:

hzalicm 10 pub 001 . OCS . aliyuncs . com ",11211);

$ memc->;setSaslAuthData("your_ocs_name "," your _ OCS _ password ");

echo $ memc-& gt;get(" memc . sess . key . TT RCT 9 coa 2 q 62 r 2 sodlq 4 qf 376 ");

/*註意這裏的key是帶前綴的,由php.ini中的memcached.sess_prefix字段決定,默認值為“memc.sess.key”。然後拼接上面輸入的會話ID“TT RC T9 coa 2q 62 r 2 sodl q 4 qf 376”。*/

& gt

代碼輸出如下:

OCS _ key | s:13:" session _ value ";

也就是PHP會話已經成功寫入OCS。