《PHP教程:php+redis實現多臺服務器內網存儲session并讀取示例》要點:
本文介紹了PHP教程:php+redis實現多臺服務器內網存儲session并讀取示例,希望對您有用。如果有疑問,可以聯系我們。
PHP編程大型網站由于大并發的問題會導致系統出現詭異的崩潰性問題這著實讓人很是蛋疼,首先考慮的就是負載均衡服務器來處理這個,當然數據庫的性能也是非常非常重要的,今天就說下在負載均衡情況下對于session這個問題如何處理,說實話不處理session其實也是可以的,但是在實際的情況中會出現一些讓用戶體驗非常蛋疼的問題,比如購物下單的時候負載均衡調配服務器來回切換的過程中session丟失了,這個時候就尷尬了,用戶就會郁悶我擦這什么鬼,于是乎各種擔心就會出現,這破網站是不是有什么安全問題等等.下面就來說說這個問題的解決方案,配置php結合redis來存儲session,假如我現在有2個(至少)服務器在做負載均衡:
PHP編程1,主服務器安裝php-redis 以及redis服務器端這個不多說去執行命令行yum或apt-get什么的,輔服務器只需要安裝php-redis(這兩個服務器必須在一個內網中不然外網訪問著實不安全的)
PHP編程2,來吧騷年打開的你服務器上的php.ini文件:
PHP編程先看看php extension=redis.so是否開啟?
PHP編程
session.save_handler = redis
session.save_path = "tcp://【redis主服務器的內網ip】:6379″
PHP編程主和輔服務器的php-redis需要綁定一下ip(ip一致主服務器的redis-server)
PHP編程
redis.conf
bind【redis主服務器的內網ip】
PHP編程這個為了安全起見設置一個redis鏈接的密碼:
PHP編程打開 vim /etc/redis/redis.conf
PHP編程requirepass 通信密碼(修改這里)
PHP編程ok配置好重啟redis :
PHP編程
sudo service redis-server restart
PHP編程3,測試Redis連接和驗證:
PHP編程
redis-cli -h 【redis主服務器內網ip】
PHP編程如果設置了redis鏈接密碼,現在嘗試訪問數據,應該得到一個AUTH錯誤接下來執行下
PHP編程
> redis-cli
redis內網ip:6397> keys *
PHP編程ok了到這步的時候已經完成99%了還差一步就是各種重啟額
PHP編程
service apache2 restart
service php5-fpm restart
PHP編程4,測試session是否寫入redis:
PHP編程
<?php
session_start();
$_SESSION['bieanju'] = array('name' => '別安駒', 'num' => 'http://www.bieanju.com/');
//連接redis
$redis = $this->connectRedis();
//
//檢查session_id
echo 'session_id:' . session_id() . '<br/>';
//redis存入的session(redis用session_id作為key,以string的形式存儲)
echo 'redis_session:' . $redis->get('PHPREDIS_SESSION:' . session_id()) . '<br/>';
echo 'php_session:' . json_encode($_SESSION['class']);
print_r($_SESSION['bieanju']);
?>
PHP編程速來圍觀,沒錯session寫入redis了可以讀取了,ok至此對于負載均衡的session也就基本解決了,剩下的就是在項目如何應用那就看你自己的業務需要.
PHP編程?最后在說一下php是世界上最好的語言,呵呵……
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/2003.html