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