日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP如何將session保存到memcached中?如何分布式保存PHP session

瀏覽:36日期:2022-09-13 11:40:40
session_set_save_handler無關的memcached保存session的方法

在memcached服務器上

1)下載memcached

#wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

2)由于memcached依賴libevent所以需要先安裝libevent庫,這里直接yum安裝

#yum install *libevent*

3)安裝memcached

#./configure --prefix=/usr/local/memcached#make#make install

4)啟動memcached

#/usr/local/memcached/bin/memcached -d -m 4096 -p 11211 -u root-d daemon ?-p port -u ?user -m memory

在web server服務器上

5)在web server上安裝php的memcache模塊

#/usr/local/php/bin/pecl install memcacheEnable memcache session handler support? [yes] : yes(這里選擇yes)

6)在php.ini中加入如下內容:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so

7)修改php.ini中的session.save_handler及session.save_path為如下內容:

session.save_handler = memcachesession.save_path = 'tcp://memcached服務器ip:11211'

亦可在PHP程序中

ini_set(’session.save_handler’, ’memcache’);ini_set(’session.save_path’, ’tcp://memcached服務器ip:11211’);

注意:這種使用memcached保存session的方式與session_set_save_handler無關

安裝完memcached之后

在php.ini中

將session.save_handler 修改為memcache,并修改save_path指向memcached的地址和端口即可

session.save_handler = memcachesession.save_path = tcp://127.0.0.1:11211

memcache的PECL這個擴展非常強大,可以支持failover以及分布存儲。

使用方法很簡單,只需要在session.save_path的參數列表中,使用逗號分隔各個memcached服務器,如:

session.save_path = 'tcp://172.16.8.81:11211,tcp://172.16.8.82:11211,tcp://172.16.8.83:11211'

則保存的session會經過hash之后保存到各個memcached服務器中,而hash的算法memcache支持兩種,crc32以及fnv:

memcache.hash_function= {crc32,fnv}

文檔中很少有提到fnv算法的,據說其散列要比crc32更好,但是我通過以下小小的程序實驗之后,發現仍舊是crc32的散列算法分布的更加平均。

<?phpini_set('memcache.hash_function', 'crc32');$memcache = new Memcache;$memcache1 = new Memcache;$memcache2 = new Memcache;$memcache->addServer(’localhost’, 11211);$memcache->addServer(’localhost’, 11212);$memcache->flush();$memcache1->connect(’localhost’, 11211);$memcache2->connect(’localhost’, 11212);$fp1 = fopen('mem1.txt', 'w');$fp2 = fopen('mem2.txt', 'w');for ($i = 0; $i < 1000; $i++){$memcache->set($i, $i, 0, 1000);fwrite($fp1, $memcache1->get($i) . ' ');fwrite($fp2, $memcache2->get($i) . ' ');}fclose($fp1);fclose($fp2);

接著我就session的保存進行了測試

我開了3個memcached進程進行測試

<?phpini_set('memcache.hash_function', 'fnv');ini_set('error_reporting', 'E_CORE_ERROR');$memcache1 = new Memcache;$memcache1->connect(’localhost’, 11211);$memcache1->flush();$memcache2 = new Memcache;$memcache2->connect(’localhost’, 11212);$memcache2->flush();$memcache3 = new Memcache;$memcache3->connect(’localhost’, 11213);$memcache3->flush();$fp1 = fopen(’mem1.txt’, ’w’);$fp2 = fopen(’mem2.txt’, ’w’);$fp3 = fopen(’mem3.txt’, ’w’);for ($i = 0; $i < 1000; $i++){session_start();$ssid = session_id();echo $ssid;session_register('id');$_SESSION['id'] = $ssid;session_write_close();fwrite($fp1, $memcache1->get($ssid) . ’ ’);fwrite($fp2, $memcache2->get($ssid) . ’ ’);fwrite($fp3, $memcache3->get($ssid) . ’ ’);//session_destroy();}fclose($fp1);fclose($fp2);fclose($fp3);

比較奇怪的是 memcached2一般都會不被選中,

而1,3的內容是一致的??赡苁菫榱薴ailover,

而當我把1,3關閉后,2中將會出現內容,說明memcached2是正常工作的。

而不論我的散列算法使用crc32還是fnv,這種現象都存在,

最后我發現:這個測試程序存在問題。

因為在session_write_close之后,整個程序的session都是唯一的了。

也就是雖然循環了這么多次,里面包含了session_destroy調用,但是返回的session id都是同樣的。

這就導致了兩個文件中的內容一致而另一個文件中沒有內容,

基于此點,

我只能分次調用腳本,腳本修改如下:

<?phpini_set('memcache.hash_strategy', 'consistent');ini_set('memcache.hash_function', 'crc32');ini_set('error_reporting', 'E_CORE_ERROR');ini_set('memcache.allow_failover', '0');$memcache1 = new Memcache;$memcache1->connect(’localhost’, 10001);$memcache1->flush();$memcache2 = new Memcache;$memcache2->connect(’localhost’, 10002);$memcache2->flush();$memcache3 = new Memcache;$memcache3->connect(’localhost’, 10003);$memcache3->flush();$fp1 = fopen('mem1.txt', 'a+');$fp2 = fopen('mem2.txt', 'a+');$fp3 = fopen('mem3.txt', 'a+');session_start();$ssid = session_id();echo $ssid . 'n';session_register('id');$_SESSION['id'] = $ssid;//session_destroy();session_write_close();fwrite($fp1, $memcache1->get($ssid) . ' ');fwrite($fp2, $memcache2->get($ssid) . ' ');fwrite($fp3, $memcache3->get($ssid) . ' ');session_destroy();fclose($fp1);fclose($fp2);fclose($fp3);

然后再shell中重復運行多次,返回的ID不同了。

再打開mem*.txt文件查看,

發現3個文件中,每個session會保存在其中兩個文件,然后分布不同。

這證明了使用memcache來保存session,一個是做到了failover,第二會按照session id來做hash分布保存。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人影视亚洲图片在线| 一区二区电影| 国产精品一页| 欧美视频久久| 蜜臀av一区二区在线免费观看 | 日本不卡视频一二三区| 亚洲精品无吗| 日本三级亚洲精品| 欧美日韩亚洲一区三区| 国产精品久久久久9999高清| 国产精品a级| 精品国产午夜肉伦伦影院| 福利视频一区| 日韩精品欧美| 久久精品国语| 国产专区一区| 麻豆成人在线| 日本少妇一区二区| 久久男人av| 欧洲av不卡| 香蕉久久国产| 欧美日韩亚洲一区二区三区在线| 国产精品大片免费观看| 超碰99在线| 婷婷亚洲五月色综合| 午夜久久av| 美腿丝袜亚洲三区| а√天堂中文在线资源8| 激情六月综合| 蜜臀久久99精品久久久画质超高清 | 日韩精品影视| 美女精品在线观看| 日本午夜精品一区二区三区电影| 国产精品宾馆| 久久要要av| 亚洲一区二区免费在线观看| 国产精品玖玖玖在线资源| 水蜜桃久久夜色精品一区| 日韩欧美一区二区三区免费观看| 午夜精品一区二区三区国产| 日本亚洲视频在线| 久久久久九九精品影院| 亚洲高清二区| 欧美视频二区| 欧美日韩色图| 久久国产免费看| 亚洲91视频| 亚洲a级精品| 色爱综合网欧美| 视频一区二区中文字幕| 国产精品1区| 激情欧美亚洲| 欧美经典一区| 1000部精品久久久久久久久| 日本一不卡视频| 丁香六月综合| 日韩av午夜在线观看| 久久九九国产| 青青国产91久久久久久| 成人精品中文字幕| 久久黄色影视| 日韩午夜电影| 欧美www视频在线观看| 亚洲综合色婷婷在线观看| 黄毛片在线观看| 亚洲专区视频| 亚洲成人国产| 国产精品99精品一区二区三区∴| 亚洲高清毛片| 麻豆极品一区二区三区| 在线观看免费一区二区| 精品欧美日韩精品| 色婷婷成人网| 亚洲第一区色| 精品成av人一区二区三区 | 婷婷综合六月| 国产欧美精品| 香蕉久久国产| 欧美天堂视频| 国产精品www994| 国产精品日韩| 丝袜美腿一区| 91成人小视频| 国产精品毛片| 日韩欧美自拍| 国产精品一页| 中文一区一区三区免费在线观 | 正在播放日韩精品| 日韩黄色在线观看| 99在线精品免费视频九九视| 高清一区二区| 国产精品.xx视频.xxtv| 免费久久精品视频| 91精品在线观看国产| 精品久久久网| 欧美在线黄色| 日本中文字幕不卡| 性一交一乱一区二区洋洋av| av高清不卡| 久久伊人久久| 久久国产乱子精品免费女| 国产亚洲毛片在线| 久久国产小视频| 波多野结衣久久精品| 久久gogo国模啪啪裸体| 日本成人在线视频网站| 日韩中文字幕一区二区三区| 亚洲国产专区校园欧美| 午夜欧美巨大性欧美巨大| 久久久久久夜| 成人午夜亚洲| 精品五月天堂| 欧美成人精品一级| 欧美日韩 国产精品| 日日夜夜免费精品视频| 中文字幕av一区二区三区人| 欧美日韩四区| 1000部精品久久久久久久久| 91精品一区国产高清在线gif| 国产精品毛片一区二区在线看| 精品欧美视频| 成人国产综合| 国产suv精品一区二区四区视频| 久久精品资源| 精品视频国产| 久久97视频| 精品五月天堂| 91欧美在线| 日韩成人亚洲| 婷婷综合亚洲| 久久高清国产| 中文视频一区| 日本不卡高清| 国产精品自在| 久久三级中文| 国产粉嫩在线观看| 丝袜美腿一区| 五月婷婷亚洲| 蜜臀av性久久久久蜜臀aⅴ四虎 | 97精品国产一区二区三区 | 精品国产亚洲一区二区三区| 精品一区二区三区在线观看视频| 久久99蜜桃| 国产一区二区三区网| 电影亚洲精品噜噜在线观看 | 日韩高清一区二区| 国产日韩欧美一区在线| 精品久久久中文字幕| 午夜精品久久久久久久久久蜜桃| 香蕉久久99| 亚洲婷婷丁香| 国产精品xxx在线观看| 中文在线免费视频| 在线精品视频在线观看高清| 夜夜嗨一区二区三区| 日韩一区二区三区四区五区| 国产美女久久| 日韩一区二区在线免费| 亚洲免费中文| 91成人精品在线| 91日韩免费| 亚洲一区二区网站| 国产亚洲一区二区三区不卡 | 成人在线免费观看91| 欧美高清不卡| 日韩欧美精品一区二区综合视频| 欧美国产免费| 亚洲午夜精品久久久久久app| 久久国产福利| 久久精品资源| 尹人成人综合网| 欧美日韩伊人| 日韩欧美精品一区| 亚洲精品护士| 日韩av有码| 日韩中文字幕1| 国内精品伊人| 丝袜美腿亚洲一区二区图片| 久久一区欧美| 模特精品在线| 国产精品久久久久毛片大屁完整版| 国产欧美一区二区三区精品酒店| 夜久久久久久| 国产日韩欧美| 国产精品99一区二区| 欧美精品国产| 欧美 日韩 国产精品免费观看| 日本成人手机在线| 久久久噜噜噜| 欧美久久香蕉| 午夜欧美精品| 精品香蕉视频| 亚洲综合色婷婷在线观看| 在线精品亚洲欧美日韩国产| 亚洲精品少妇| 久久精品不卡| 国产精品白丝久久av网站| 日韩视频一区| 成人国产精品久久| 日韩视频1区|