來源:藏色散人 發(fā)布時(shí)間:2019-01-10 10:46:53 閱讀量:973
PHP默認(rèn)就支持保存session到redis,不需任何額外代碼。
Redis保存session用的命令是setex,用redis-cli monitor實(shí)時(shí)監(jiān)測(cè)可以檢測(cè)到。
setex命令的語法:
1 |
|
其中,key是鍵值,time是過期時(shí)間,value是字符串類型的值。
具體步驟如下。
1、環(huán)境
要用Redis保存session,首先必須要滿足下面的條件:
必須有一臺(tái)安裝了Redis服務(wù)器。本例用本地服務(wù)器Redis,IP為:127.0.0.1,端口:6379。
PHP安裝了phpredis擴(kuò)展,通過phpinfo()能夠看到擴(kuò)展,如下圖。
PHP能正常訪問Redis。測(cè)試代碼如下,
1 2 3 4 5 6 |
|
刷新頁面,如果看到數(shù)字不斷增加,說明Redis環(huán)境正常。
2、配置PHP
安裝了Redis擴(kuò)展后,phpinfo()輸出中會(huì)看到session的支持句柄,其中包含了redis,如下:
有一點(diǎn)要注意的是,Redis的過期時(shí)間最大值為2147483647,也就是十六進(jìn)制的7fffffff。
所以,session配置中回收時(shí)間session.gc_maxlifetime的值不能超過這個(gè)數(shù)字。
否則Redis用setex命令保存session時(shí),過期時(shí)間time為負(fù)數(shù),相當(dāng)于直接刪除了這個(gè)key。
這樣不僅不會(huì)保存成功,PHP還會(huì)返回下面的錯(cuò)誤:
1 |
|
接著,修改php配置,總共有3種方法,如下選擇其中一種即可:
2.1 修改php.ini
打開 php.ini 文件,設(shè)置下面兩個(gè)值:
1 2 |
|
如果Redis有密碼,用下面的配置:
1 |
|
配置完成后,重啟PHP-FPM。
2.2 修改php-fpm.conf
PHP-FPM的配置文件/etc/php-fpm.conf或者/etc/php-fpm.d/*.conf中,也有session的配置。
它們的session配置優(yōu)先級(jí)比php.ini高,會(huì)覆蓋php.ini中的配置。
所以,也直接在這里面改:
1 2 |
|
如果用php.ini的配置,則需要把這兩行用;注釋掉。
然后重啟PHP-FPM
2.3 PHP代碼
也可以在運(yùn)行的PHP代碼中配置session,如下。
1 2 |
|
3、測(cè)試
寫一段PHP測(cè)試代碼,如下:
1 2 3 4 |
|
如果刷新頁面看到數(shù)字不斷增加,說明配置Redis保存session成功。
在線
客服
服務(wù)時(shí)間:周一至周日 08:30-18:00
選擇下列產(chǎn)品馬上在線溝通:
客服
熱線
7*24小時(shí)客服服務(wù)熱線
關(guān)注
微信
關(guān)注官方微信