成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:2日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
性感少妇一区| 中文在线资源观看网站视频免费不卡 | 亚洲国产你懂的| 欧美日韩一区二区三区在线观看免| 欧美精品亚洲二区| 日本视频中文字幕一区二区三区| 国产精品美女xx| 一区二区三区不卡在线观看| 亚洲欧洲精品一区二区三区波多野1战4| 精品久久久久久久人人人人传媒| 国产一区二区美女诱惑| 欧美日韩国产在线播放网站| 日韩精品一二三区| 久久动漫亚洲| 午夜久久福利影院| 色拍拍在线精品视频8848| 亚洲一区二区欧美日韩| 国产精品久久久久久久久婷婷 | 亚洲一区在线看| 亚洲综合好骚| 亚洲图片欧美一区| 亚洲一区黄色| 午夜婷婷国产麻豆精品| 久久福利影视| 日本中文字幕一区二区有限公司| 久久久久国产精品一区二区| 视频在线观看国产精品| 老司机精品导航| 日韩精品免费视频人成| 色噜噜狠狠成人网p站| 亚洲国产乱码最新视频| 国产亚洲激情| 午夜电影网一区| 欧洲av在线精品| 国产精品综合一区二区| 精品三级av在线| 91蝌蚪porny九色| 国产人久久人人人人爽| 雨宫琴音一区二区在线| 一区二区高清视频在线观看| 久久av一区二区三区| 青椒成人免费视频| 欧美二区在线观看| 99久久99久久精品免费观看| 国产精品国产三级国产| 中文精品一区二区三区| 午夜精品久久一牛影视| 欧美视频一区二区| 粉嫩绯色av一区二区在线观看| 久久久99精品免费观看不卡| 亚洲激情网址| 免费人成精品欧美精品 | 亚洲香肠在线观看| 欧美视频精品在线| 粉嫩av亚洲一区二区图片| 久久久久久电影| 国产亚洲毛片| 精品一区二区免费在线观看| 日韩免费高清电影| 午夜日本精品| 亚洲成av人片在www色猫咪| 欧美日韩国产在线播放网站| 91色|porny| 亚洲亚洲精品在线观看| 欧美日韩国产综合久久| 91免费国产在线观看| 亚洲自拍偷拍综合| 欧美视频精品在线| 99久久er热在这里只有精品15| 亚洲三级小视频| 色999日韩国产欧美一区二区| 国产精品一区二区久久精品爱涩 | 欧美亚洲国产一区在线观看网站| 国产mv日韩mv欧美| 亚洲视频一二三区| 色噜噜狠狠成人网p站| 成人av动漫在线| 一区二区三区中文在线观看| 欧美日韩dvd在线观看| 欧美在线播放一区| 亚洲午夜久久久久久久久久久 | 337p日本欧洲亚洲大胆色噜噜| 亚洲高清资源综合久久精品| 麻豆国产一区二区| 中文字幕成人av| 91久久国产综合久久| 不卡一区在线观看| 亚洲亚洲人成综合网络| 欧美一区二区三区在线观看| 激情欧美一区二区三区| 国产一区二区福利| 亚洲乱码中文字幕综合| 欧美三级电影在线观看| 欧美日韩国产高清| 蜜桃久久久久久久| 中文字幕av一区 二区| 欧美午夜精品久久久| 欧美激情1区2区3区| 香蕉加勒比综合久久| 精品sm捆绑视频| 久久人人超碰| 欧美高清一区| 蜜臂av日日欢夜夜爽一区| 国产精品欧美极品| 91精品国产综合久久久蜜臀粉嫩 | 91国产丝袜在线播放| 亚洲无线观看| 国产二区国产一区在线观看| 亚洲美女淫视频| 日韩一区二区在线看| 美女诱惑黄网站一区| 欧美成人在线免费观看| 精品在线播放免费| 一区二区三区**美女毛片| 欧美精品一区二区蜜臀亚洲| 久久久久国产精品午夜一区| 午夜国产精品视频| 国产伦精品一区二区三区免费| 亚洲欧美激情视频在线观看一区二区三区 | 欧美网站一区二区| 伊人久久大香线蕉综合热线| 狠狠色伊人亚洲综合成人| 亚洲人成伊人成综合网小说| 欧美xxx久久| 欧美日韩视频在线观看一区二区三区| 狠狠色综合色区| 成人小视频免费观看| 日韩激情av在线| 中文字幕在线不卡| 亚洲精品一区二区三区福利| 色94色欧美sute亚洲线路一ni | 中文久久精品| 欧美视频一区| www.av精品| 国产一区二区三区在线观看免费| 亚洲国产欧美一区二区三区丁香婷| 国产亚洲1区2区3区| 这里只有精品99re| 色噜噜狠狠一区二区三区果冻| 日韩视频免费| 国产精品v欧美精品v日韩精品| 岛国精品在线播放| 久久99精品久久久久久| 午夜影视日本亚洲欧洲精品| 亚洲欧洲精品一区二区三区| 久久一区二区视频| 欧美久久免费观看| 色婷婷综合在线| 久久大逼视频| 99xxxx成人网| 欧美破处大片在线视频| a亚洲天堂av| 国产成人鲁色资源国产91色综| 美腿丝袜亚洲三区| 日韩av一级电影| 亚洲二区视频在线| 亚洲精品ww久久久久久p站| 亚洲国产成人在线| 日韩你懂的在线播放| 欧美网站大全在线观看| 色婷婷精品大视频在线蜜桃视频| 国产精品日韩精品欧美精品| 亚洲国产日韩欧美| 极品中文字幕一区| 欧美区亚洲区| 国产精品二区三区四区| 欧美日本一区二区视频在线观看 | 中文字幕日韩一区| 国产精品久久午夜| 中文字幕精品一区| 久久久精品免费观看| 精品噜噜噜噜久久久久久久久试看| 欧美一区二区成人| 91精品一区二区三区在线观看| 欧美亚洲愉拍一区二区| 欧美性生活久久| 欧美午夜电影在线播放| 在线免费不卡电影| 欧洲亚洲精品在线| 欧美日韩一区二区三区在线| 欧美在线观看你懂的| 欧美日韩一区二区三区四区| 欧美电影在线免费观看| 日韩女优制服丝袜电影| 精品日产卡一卡二卡麻豆| 日韩精品中文字幕在线不卡尤物| 日韩欧美国产麻豆| 26uuuu精品一区二区| 久久久久久久一区| 中文字幕免费不卡| 亚洲欧洲成人自拍| 亚洲综合色视频| 亚洲一二三区不卡| 日本不卡一区二区三区| 免费的国产精品| 国产乱码精品一区二区三区忘忧草| 国产在线精品免费| 成人午夜电影久久影院| 97se亚洲国产综合自在线| 欧美三级黄美女|