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

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

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

瀏覽:39日期: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的內容是一致的。可能是為了failover,

而當我把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久久,三上悠亚国产精品一区二区三区
亚洲婷婷免费| 亚洲va久久久噜噜噜久久| 国产中文欧美日韩在线| 91tv亚洲精品香蕉国产一区| 国产模特精品视频久久久久| 国产极品久久久久久久久波多结野| 精品网站999| 一区在线免费| 国产精品magnet| 国产真实久久| 亚洲精品网址| 国产日韩精品视频一区二区三区| 成人羞羞视频播放网站| 日韩一二三区在线观看| 日韩国产专区| 欧美日韩a区| 亚洲精品高潮| 成人午夜国产| 日韩二区三区在线观看| 特黄毛片在线观看| 亚洲少妇诱惑| 成人黄色av| 国产精品亚洲成在人线| 国产拍在线视频| 欧美国产极品| 国产精品夜夜夜| 日本不卡中文字幕| 亚洲欧洲另类| 亚洲欧美网站在线观看| 国模 一区 二区 三区| 久久超碰99| 免费精品视频在线| 亚洲一级特黄| 精品国产成人| 欧美日韩夜夜| 欧美精品激情| 欧洲一级精品| 久久影院午夜精品| 免费精品一区| 欧美啪啪一区| 日韩精品久久久久久久电影99爱 | 国产亚洲电影| 亚洲精品综合| 夜夜精品视频| 99久精品视频在线观看视频| 美女久久99| 91精品国产一区二区在线观看| 久久久久国产精品一区三寸| 久久99国产精品视频| 日韩国产精品久久久| 99国产精品久久久久久久| 亚洲高清久久| 久久国产亚洲精品| av综合电影网站| 蜜桃久久久久久| 视频在线在亚洲| 中文av在线全新| 国产成人精品一区二区三区免费| 欧美日韩国产高清电影| 国产 日韩 欧美 综合 一区| 美女免费视频一区| 日本一不卡视频| 久久激情综合网| 国产一区导航| 亚洲区国产区| 日本伊人午夜精品| 福利一区二区| 在线人成日本视频| 亚洲综合电影| 久久精品女人| 国产毛片久久久| 日韩av不卡一区二区| 日本强好片久久久久久aaa| 日韩精品一级中文字幕精品视频免费观看 | 99国产精品99久久久久久粉嫩| 日韩毛片视频| 亚洲精品美女91| 国产精品激情| 日韩综合一区| 欧美亚洲激情| 久久人人精品| 久久香蕉精品| 国产香蕉精品| 另类专区亚洲| 亚洲一区激情| 亚洲精品综合| 国产精品日韩精品中文字幕| 激情婷婷久久| 综合亚洲自拍| 青草国产精品久久久久久| 久久精品三级| 国产探花一区在线观看| 偷拍精品精品一区二区三区| 婷婷久久一区| 欧美亚洲色图校园春色| 色88888久久久久久影院| 日韩国产欧美在线播放| 嫩草伊人久久精品少妇av杨幂| 国产精品99一区二区三| 亚洲欧洲美洲av| 日本免费一区二区视频| 国产在线观看www| 日韩1区2区| 日韩一级网站| 欧美日韩一二| 日本午夜免费一区二区| 麻豆网站免费在线观看| 免费视频久久| 国产欧美日韩一级| 欧美日韩激情在线一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 免费在线播放第一区高清av| 亚洲午夜精品久久久久久app| 中文字幕亚洲精品乱码| 亚洲ww精品| av综合电影网站| 日本成人手机在线| 免费一级欧美片在线观看网站| 日韩精品成人| 国产精品mm| 亚洲欧美日本日韩| 麻豆视频一区二区| 免费在线观看不卡| 欧美日韩国产观看视频| 日韩国产欧美在线播放| 一区二区视频欧美| 精品国产91| 日韩精品免费视频人成 | 国产日韩欧美| 亚洲高清二区| 日本欧美在线| 精品国产一区二区三区噜噜噜| 国产一区二区亚洲| 国产一区二区三区四区| 99pao成人国产永久免费视频 | 国产欧美69| 日韩毛片视频| 天堂av在线一区| 欧美国产三级| 99亚洲视频| 精品一区视频| 午夜在线一区二区| 免费人成精品欧美精品| 久久久国产精品入口麻豆| 国产专区一区| 国产精品第十页| 亚洲免费婷婷| 黄色aa久久| 视频一区欧美精品| 欧美丰满日韩| 日韩精品欧美成人高清一区二区| 日韩在线观看一区| 快she精品国产999| 三上亚洲一区二区| 久草精品视频| 99视频精品视频高清免费| 中文字幕一区二区三区在线视频| 日韩制服丝袜av| 久久99影视| 在线亚洲精品| 成人黄色av| 69堂精品视频在线播放| 国内精品99| 精品国产一区二区三区2021| 亚洲综合专区| 欧美aa在线观看| 日韩精品久久理论片| 免费视频亚洲| 国产一区三区在线播放| 亚洲一区欧美激情| 欧美日韩视频网站| 日韩一区二区三区高清在线观看| 成人片免费看| 国产精品尤物| 免费日本视频一区| 91精品国产91久久久久久黑人| 奇米亚洲欧美| 国产视频一区在线观看一区免费| 高清不卡一区| 国产精品丝袜在线播放| 亚洲伊人影院| 性欧美69xoxoxoxo| 成人国产精品一区二区网站| 91伊人久久| 亚洲一区二区三区中文字幕在线观看| 日韩电影免费网址| 精品国产欧美日韩| 日韩免费小视频| 国产精品久久久久久久久久齐齐| 视频在线观看91| 亚洲女同一区| 激情欧美一区二区三区| 欧美黄色网页| 日韩大片免费观看| 欧美激情另类| 日韩理论视频| 国产中文在线播放| 国内精品亚洲| 丰满少妇一区| 久久男人天堂|