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

      網(wǎng)友投稿 621 2025-04-02

      最近我的幾篇文章都是是最近項(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

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

      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

      為了簡(jiǎn)化操作過程,上面的環(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說明中找到了最簡(jiǎn)單的辦法,其實(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)聽的端口。

      執(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)容。

      版權(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)容。

      上一篇:excel表格數(shù)據(jù)求差的方法(怎樣在excel表格中求差)
      下一篇:搜索具體內(nèi)容怎么找(搜索內(nèi)容)
      相關(guān)文章
      日本亚洲中午字幕乱码| 香蕉蕉亚亚洲aav综合| 亚洲韩国精品无码一区二区三区| 亚洲一区精品视频在线| 亚洲欧洲日韩国产综合在线二区| 亚洲精品成人区在线观看| 色窝窝亚洲av网| 色天使色婷婷在线影院亚洲| 亚洲一线产品二线产品| 亚洲熟妇av午夜无码不卡| 色天使亚洲综合在线观看| 亚洲日本VA中文字幕久久道具| 在线综合亚洲欧洲综合网站 | 亚洲熟妇无码一区二区三区导航| 2020天堂在线亚洲精品专区| 日韩亚洲国产高清免费视频| 亚洲乱码国产乱码精华| 亚洲日本成本人观看| 日产国产精品亚洲系列| jjzz亚洲亚洲女人| 久久精品国产精品亚洲下载| 久久亚洲AV无码西西人体| 国产亚洲综合色就色| 亚洲AV无码1区2区久久| 亚洲综合视频在线观看| 亚洲专区中文字幕| 亚洲色偷偷综合亚洲av78| 在线观看亚洲视频| 久久激情亚洲精品无码?V| 亚洲成AV人在线播放无码| 亚洲国产精品人久久| 亚洲日本国产乱码va在线观看| 亚洲人成日本在线观看| 亚洲色欲色欲www在线播放| 成人亚洲综合天堂| 亚洲综合色自拍一区| 亚洲国产精久久久久久久| 亚洲天堂一区二区三区四区| 亚洲精品无码人妻无码| 亚洲国产精品成人AV无码久久综合影院| 亚洲精品无码永久在线观看|