php session redis 配置

weixin_33895657發表於2017-06-13

相信很多人用過資料庫,Memcache以及檔案儲存SESSION,那麼Rdis可以儲存SESSION嗎?答案是肯定的。

具體環境:

一臺apache+php的伺服器(yum安裝remi源及配置 httpd-2.2.15 php-5.4.45)

一臺redis伺服器(yum安裝remi源及配置 redis-3.2.6)

保證apache伺服器可以訪問redis伺服器的6379埠

具體步驟:

1、在apache+php伺服器上安裝redis擴充套件

點選(此處)摺疊或開啟

yum install php-pecl-redis

2、測試php是否安裝擴充套件成功

more index.php

點選(此處)摺疊或開啟

php

phpinfo()

?>

瀏覽器訪問如下:

如上圖說明安裝成功,這裡版本號和redis本身的版本號不同,大家可以忽略。

3、然後修改php.conf檔案,可能很多人會疑問不是修改php.ini檔案嗎?一會下面我會說。

點選(此處)摺疊或開啟

more /etc/httpd/conf.d/php.conf

將如下兩行:

點選(此處)摺疊或開啟

php_value session.save_handler "files"

php_value session.save_path "/var/lib/php/session"

修改為如下內容

點選(此處)摺疊或開啟

php_value session.save_handler "redis"

php_value session.save_path "tcp://192.168.9.131:6379"

這裡有一些文章裡面加了tcp,有的沒有加,本人測試過加或者不加session都可以存放在redis裡面。

我個人理解的意思是:加了tcp表示tcp協議,如果沒有加則表示通過http協議。如果不對請勿噴~~

儲存退出後重新啟動httpd服務

4、寫一個測試頁面test.php,內容如下:

點選(此處)摺疊或開啟

header("Content-type:text/html;charset=utf-8");

session_start();//這個很重要

$_SESSION['test_session']= @array('name' =>'fanqie' , 'ccc'=>'hello redis ');

$redis = new redis();

$redis->connect('192.168.9.131', 6379);

echo 'sessionid>>>>>>> PHPREDIS_SESSION:' . session_id();

echo '';

echo '';

//redis用session_id作為key並且是以string的形式儲存

echo '通過php用redis獲取>>>>>>>'.$redis->get('PHPREDIS_SESSION:' . session_id());

echo '';

echo '';

echo '通過php用session獲取>>>>>>>';

echo '';

var_dump($_SESSION['test_session']);

echo '';

5、測試,通過瀏覽器訪問

在redis裡面檢視是否有這個session

redis中的session值和瀏覽器訪問的值一樣,說明成功。

這裡我說一下為什麼我直接修改的php.conf檔案,而不是php.ini檔案

如果你兩個都配置了,它們的優先順序比較高的是php.conf檔案。所以說如果你想配置php.ini檔案,你還需要註釋掉php.conf中預設存本地的方式。這樣更復雜繁瑣。相信大家會選擇上面比較簡單的方式。

更多前沿PHP技術請搜尋千鋒PHP,做真實的自己,用良心作教育

相關文章