一般負載平衡內容有兩種形式,一種是靜態,另一種是動態,動態網站內容就可能需要進行交互,那麼就涉及到session共享的問題。預設PHP是將session儲存在LocalDisk,如果是多台php主機之間進行負載,那麼該如何共享session?今天我們就解決這個問題。
session會話共享檔案有很多種方式:
分散式檔案共用;NFS,NAS檔案儲存等。
Nginx負載平衡ip_hash模組,固定訪客到後端某台伺服器。
將session儲存到資料庫中;例如MySQL,Memcached,Redis,Mongodb等。
我個人比較傾向於將session儲存到Redis資料庫,用這種方式來同步session共享,不僅不會加大資料庫的負擔,而且安全性比cookie更高,把session放到記憶體裡面,比從磁碟文件中讀取會快很多。 「有人認為;那我把所有的快取軟體都安裝,速度豈不是更快,那就不是快取加速了,而演變成了快取庫了」。
php語言腳本預設不支援對Redis的操作,所以需要安裝第三方phpRedis擴充模組,讓其支援對Redis的操作,至於如何安裝使用phpRedis,可以參考我前面寫的文章《phpRedis擴充模組安裝設定使用》 。另外這裡還需要一台Redis伺服器,請參閱《Linux Centos7 Redis 3.2.9 原始碼編譯安裝設定》。
1.修改PHP設定檔php.ini將session儲存到Redis中。
# vim /usr/local/php/etc/php.ini session.save_handler = files ;session.save_path = "N;/path" 修改为: session.save_handler = Redis session.save_path = “tcp://10.10.204.66:6379” ;如果Redis有密码连接方式 session.save_path = “tcp://10.10.204.66:6379?auth=password”
2.重啟php-fpm服務生效
# systemctl restart php-fpm
以上所有過程均是經過手動測試的,99%可用於生產。
以上是Redis 快取 PHP 7.2 session 變數共享的詳細內容。更多資訊請關注PHP中文網其他相關文章!