[轉(zhuǎn)載]利用memcached在多臺(tái)服務(wù)器之間共享PHP的session數(shù)據(jù)

      網(wǎng)友投稿 688 2022-05-29

      最近我的幾篇文章都是是最近項(xiàng)目的一點(diǎn)心得^^

      這個(gè)項(xiàng)目一開始就設(shè)計(jì)的“很大”,考慮了很多負(fù)載均衡方面的東西,比如采用nginx將php的請(qǐng)求分?jǐn)偟饺舾蓚€(gè)運(yùn)行php fastcgi的獨(dú)立服務(wù)器中。這樣的設(shè)計(jì)除了在每個(gè)php fastcgi服務(wù)器中要保存一份程序的拷貝以外, 還有一個(gè)亟待解決的問題。由于php fastcgi進(jìn)程分別運(yùn)行在不同的服務(wù)器上,默認(rèn)的,php的session數(shù)據(jù)是在各個(gè)服務(wù)器上分別存放的,這樣的話,如果在某一次php請(qǐng)求過 后,nginx將php請(qǐng)求發(fā)送到了另外集群中的另外一臺(tái)php fastcgi服務(wù)器,那么就會(huì)導(dǎo)致session的丟失。經(jīng)過一系列考慮,項(xiàng)目組決定采用一臺(tái)獨(dú)立memcached服務(wù)器來存儲(chǔ)整個(gè)項(xiàng)目的php session數(shù)據(jù),再通過改寫php的session處理函數(shù)來對(duì)memcached服務(wù)器進(jìn)行數(shù)據(jù)讀寫,然后解決各個(gè)php fastcgi中session不同步的問題。

      項(xiàng)目背景基本上就是上面說的那些,下面大概說說相關(guān)的網(wǎng)絡(luò)環(huán)境,然后進(jìn)入具體的配置、實(shí)現(xiàn)過程:

      1、nginx服務(wù)器一臺(tái),IP地址:172.16.236.208

      2、php fastcgi服務(wù)器兩臺(tái),IP分別為:172.16.236.210,172.16.236.211

      3、memcached服務(wù)器一臺(tái),IP為:172.16.236.220

      為了簡化操作過程,上面的環(huán)境僅僅是達(dá)到項(xiàng)目需求的假設(shè),實(shí)際項(xiàng)目中還有許多額外的處理。

      首先,修改nginx虛擬主機(jī)配置,將php的請(qǐng)求分發(fā)到各個(gè)php fastcgi服務(wù)器去,

      大致的配置過程可以參加我之前的文章:使用nginx配置多個(gè)php fastcgi負(fù)載均衡

      第二步,為php fastcgi服務(wù)器安裝php-memcache擴(kuò)展,參見:memcached、php-memcache安裝筆記

      啰嗦一句,這一步其實(shí)只需在一臺(tái)服務(wù)器上進(jìn)行,其他php fastcgi的配置其實(shí)可以偷懶,就是將之前編譯好的memcache.so拷貝到需要配置的服務(wù)器中,然后修改php.ini可以加載這個(gè)擴(kuò)展即可。

      第三步,修改項(xiàng)目php源代碼,使php的session存取使用memcached。

      之前沒有認(rèn)真去讀php的手冊(cè),先是自己寫session的handler,然后又碰到一些奇怪的問題。最后在php官方的memcache說明中找到了最簡單的辦法,其實(shí)只要在調(diào)用session_start()之前執(zhí)行如下代碼:

      $host = '172.16.236.220' ; $port = '11211' ;

      $session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port ";

      ini_set('session.save_handler', 'memcache');

      ini_set('session.save_path', $session_save_path);

      其中$host是memcached服務(wù)器的ip地址,$port是memcached監(jiān)聽的端口。

      [轉(zhuǎn)載]利用memcached在多臺(tái)服務(wù)器之間共享PHP的session數(shù)據(jù)

      執(zhí)行了如下代碼以后,所有php fastcgi服務(wù)器的session操作都同步到了memcached服務(wù)器,而對(duì)于項(xiàng)目的php代碼來說,以前該怎么用還是怎么用,完全可以不用像這篇博客開頭那樣,以為要改寫php的session處理函數(shù)了。

      再次感嘆一下,php官方的說明文檔真是無比強(qiáng)大…以后真不應(yīng)該這么自信,還是應(yīng)該先去官方仔細(xì)找找~

      Memcached PHP

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:[跟著官方文檔學(xué)Selenium][學(xué)習(xí)筆記][四][WebDriver的功能]
      下一篇:數(shù)據(jù)開放的幾種形式
      相關(guān)文章
      国产AV无码专区亚洲AV琪琪| 夜色阁亚洲一区二区三区| 国产精品亚洲αv天堂无码| 亚洲中文字幕久久精品无码A | 911精品国产亚洲日本美国韩国| 亚洲日韩激情无码一区| 亚洲欧洲日产国码无码网站| 国产成人毛片亚洲精品| 久久久久国产亚洲AV麻豆| 中文字幕亚洲天堂| 久久亚洲国产成人影院网站| 国产亚洲?V无码?V男人的天堂| 精品亚洲一区二区三区在线观看| 亚洲免费视频一区二区三区| 亚洲黄片毛片在线观看| 亚洲日本韩国在线| 红杏亚洲影院一区二区三区| 亚洲精品无码专区在线在线播放| 在线亚洲午夜理论AV大片| 亚洲国产无套无码av电影| 亚洲av午夜成人片精品网站 | 亚洲爆乳无码一区二区三区| 日韩亚洲欧洲在线com91tv| 久久精品国产96精品亚洲| 亚洲人成在线播放网站岛国| 精品亚洲国产成AV人片传媒| 亚洲精品在线播放| 国产精品亚洲自在线播放页码| 亚洲精品无码专区在线| 亚洲av无码专区亚洲av不卡| 婷婷亚洲天堂影院| 亚洲综合无码AV一区二区 | 亚洲午夜爱爱香蕉片| 亚洲精品无码成人片久久| 亚洲成AV人片在| 亚洲综合综合在线| 国内精品久久久久影院亚洲| 亚洲hairy多毛pics大全| 亚洲第一页综合图片自拍| 在线精品亚洲一区二区小说| 亚洲av无码一区二区三区乱子伦 |