php+redis實(shí)現(xiàn)多臺(tái)服務(wù)器內(nèi)網(wǎng)存儲(chǔ)session并讀取示例
大型網(wǎng)站由于大并發(fā)的問題會(huì)導(dǎo)致系統(tǒng)出現(xiàn)詭異的崩潰性問題這著實(shí)讓人很是蛋疼,首先考慮的就是負(fù)載均衡服務(wù)器來處理這個(gè),當(dāng)然數(shù)據(jù)庫(kù)的性能也是非常非常重要的,今天就說下在負(fù)載均衡情況下對(duì)于session這個(gè)問題如何處理,說實(shí)話不處理session其實(shí)也是可以的,但是在實(shí)際的情況中會(huì)出現(xiàn)一些讓用戶體驗(yàn)非常蛋疼的問題,比如購(gòu)物下單的時(shí)候負(fù)載均衡調(diào)配服務(wù)器來回切換的過程中session丟失了,這個(gè)時(shí)候就尷尬了,用戶就會(huì)郁悶我擦這什么鬼,于是乎各種擔(dān)心就會(huì)出現(xiàn),這破網(wǎng)站是不是有什么安全問題等等。下面就來說說這個(gè)問題的解決方案,配置php結(jié)合redis來存儲(chǔ)session,假如我現(xiàn)在有2個(gè)(至少)服務(wù)器在做負(fù)載均衡:
1,主服務(wù)器安裝php-redis 以及redis服務(wù)器端這個(gè)不多說去執(zhí)行命令行yum或apt-get什么的,輔服務(wù)器只需要安裝php-redis(這兩個(gè)服務(wù)器必須在一個(gè)內(nèi)網(wǎng)中不然外網(wǎng)訪問著實(shí)不安全的)
2,來吧騷年打開的你服務(wù)器上的php.ini文件:
先看看php extension=redis.so是否開啟
session.save_handler = redis session.save_path = "tcp://【redis主服務(wù)器的內(nèi)網(wǎng)ip】:6379″
主和輔服務(wù)器的php-redis需要綁定一下ip(ip一致主服務(wù)器的redis-server)
redis.conf bind【redis主服務(wù)器的內(nèi)網(wǎng)ip】
這個(gè)為了安全起見設(shè)置一個(gè)redis鏈接的密碼:
打開 vim /etc/redis/redis.conf
requirepass 通信密碼(修改這里)
ok配置好重啟redis :
sudo service redis-server restart
3,測(cè)試Redis連接和驗(yàn)證:
redis-cli -h 【redis主服務(wù)器內(nèi)網(wǎng)ip】
如果設(shè)置了redis鏈接密碼,現(xiàn)在嘗試訪問數(shù)據(jù),應(yīng)該得到一個(gè)AUTH錯(cuò)誤接下來執(zhí)行下
> redis-cli redis內(nèi)網(wǎng)ip:6397> keys *
ok了到這步的時(shí)候已經(jīng)完成99%了還差一步就是各種重啟額
service apache2 restart service php5-fpm restart
4,測(cè)試session是否寫入redis:
<?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']);
?>
速來圍觀,沒錯(cuò)session寫入redis了可以讀取了,ok至此對(duì)于負(fù)載均衡的session也就基本解決了,剩下的就是在項(xiàng)目如何應(yīng)用那就看你自己的業(yè)務(wù)需要。
最后在說一下php是世界上最好的語(yǔ)言,呵呵……
相關(guān)文章
Zend Framework框架的校驗(yàn)器InArray使用示例
這篇文章主要介紹了 zf框架的校驗(yàn)器InArray使用示例框架的校驗(yàn)器InArray使用示例,需要的朋友可以參考下2014-03-03
使用PHP Socket 編程模擬Http post和get請(qǐng)求
這篇文章主要介紹了使用PHP Socket 編程模擬Http post和get請(qǐng)求 ,需要的朋友可以參考下2014-11-11
CodeIgniter讀寫分離實(shí)現(xiàn)方法詳解
這篇文章主要介紹了CodeIgniter讀寫分離實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了CodeIgniter讀寫分離的相關(guān)配置與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-01-01
thinkphp的URL路由規(guī)則與配置實(shí)例
這篇文章主要介紹了thinkphp的URL路由規(guī)則與配置方法,實(shí)例分析了ThinkPHP的路由規(guī)則及偽靜態(tài)設(shè)置方法,并分析了相關(guān)的注意事項(xiàng),是ThinkPHP開發(fā)中非常重要的技巧,需要的朋友可以參考下2014-11-11
TP3.2框架分頁(yè)相關(guān)實(shí)現(xiàn)方法分析
這篇文章主要介紹了TP3.2框架分頁(yè)相關(guān)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了TP3.2框架分頁(yè)相關(guān)步驟、功能實(shí)現(xiàn)方法與操作技巧,需要的朋友可以參考下2020-06-06
Laravle eloquent 多對(duì)多模型關(guān)聯(lián)實(shí)例詳解
Eloquent中一個(gè)模型就是一個(gè)數(shù)據(jù)表,數(shù)據(jù)表之間通常會(huì)有關(guān)聯(lián),多對(duì)多關(guān)聯(lián)就是2個(gè)表之間相互有很多關(guān)聯(lián),這篇文章給大家介紹了Laravle eloquent 多對(duì)多模型關(guān)聯(lián)實(shí)例詳解,需要的朋友參考下吧2017-11-11
Laravel 5.5 的自定義驗(yàn)證對(duì)象/類示例代碼詳解
Laravel 5.5 將提供一個(gè)全新的自定義驗(yàn)證規(guī)則的對(duì)象,以作為原來的 Validator::extend 方法的替代。接下來通過示例代碼給大家介紹laravel 自定義驗(yàn)證對(duì)象和類,需要的朋友參考下吧2017-08-08

