phpmemcached教程
❶ Memcache如何安裝
1、將下載的memcached.exe文件放到磁碟固定的地方,不要刪除。打開開始菜單,在輸入框里輸入cmd按回車。
❷ php memcached怎麼用
memcached是一種緩存技術, 基於c/s模式,他可以把你的數據放入內存,從而通過內存訪問提速,因為內存最快的, memcached技術的主要目的提速,
在memachec 中維護了一張大的hashtable表 ,該表是在內存,表的結構是
key value
字串 (字串,數值,數組,對象,布爾,二進制數據,null)
u 安裝並使用memcached
安裝步驟
(1) 下載memcached軟體
(2) 安裝
進入cmd ,切換到 memcached.exe 文件所在目錄
memcached.exe –d install
(3) 啟動memcached
第一種,可以到服務點擊啟動
第二種, 命令行
memcached.exe –m 200MB –d start 【以deamon方式啟動,默認64M】
如果你在啟動時,win7啟動不成功, 則可以使用如下方法
memcached.exe –p 埠號
轉載,僅供參考。
❸ windows下 php memcached 設置最大內存
工具:
memcached-1.2.6-win32-bin.zip MemCached服務端程序(for win)
Memcached Manager win下的MemCached管理工具
安裝配置MemCached服務端
下載memcached-1.2.6-win32-bin.zip ,解壓後得到memcached.exe,就是memcached的主程序了。比如我們放到MemCached伺服器下的C:\Program Files\MemCacheD下
下載安裝Memcached Manager ,通過這個來管理memcached的服務端。
打開MemCacheD Manager,點擊 add Server,填寫伺服器信息。我這里直接在本地安裝了memcached。如圖,填完後點擊apply,成功的話右側會出現伺服器。
點擊Add Instance添加memcached實例。這里有一些配置信息。Ip,埠,內存等等,不解釋了。點擊apply後會提示你是否現在啟動,我們這里選是
成功後發現右側已經有實例了,到此服務端配置完畢。
二、php安裝Memcached模塊支持
1、下載php_memcache.dll模塊,
你可以從http://downloads.php.net/pierre/找到對應的版本,
php5.3對應php_memcache-2.2.6-5.3-vc9-x86.zip
將php_memcache.dll放到php\ext目錄下,
2、修改php.ini來加入擴展,並並重啟apache伺服器
在php.ini加入一行引用擴展,代碼如下:
extension=php_memcache.dll
接著在 php.ini 文件里加上:
[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
memcache.default_port = 11211
最好就放在剛才寫 "extension=php_memcache.dll" 的下面。(這是默認的一些配置),重啟apache伺服器,
然後查看一下phpinfo,如果有memcache,那麼就說明安裝成功!
測試windows下的Memcached
測試代碼如下:
復制代碼
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('key', 'Hello Memcached!', 0, 60);
$val = $mem->get('key');
echo $val;
?>
復制代碼
❹ 如何將PHP session信息緩存到memcached裡面
在PHP的ini配置文件裡面提供了[Session]相關配置,可以支持將信息存到文件或memcached伺服器裡面。由配置項session.save_handler = memcached決定。大多數場景,該session數據並不需要持久化,且為了提升網站性能,會選擇將session信息緩存到memcached裡面。
需要修改php.ini配置文件:
1、session段
找到[Session]段落,修改存儲引擎為:
session.save_handler = memcached(注意是帶d擴展)
修改存儲地址,即OCS訪問地址為:
session.save_path = 「be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com:11211″(注意帶d擴展,則前面不用加tcp://,不帶d的擴展需要加)
修改緩存到memcached的key的時間
session.gc_maxlifetime = 1440(單位是秒,強烈建議必須設置一個合理時間,以保證OCS始終只緩存熱點數據)
2、memcached段
在php.ini的全局段,建一個單獨段落[memcached],然後在空白地方加入下面配置
[memcached]
memcached.use_sasl = On
memcached.sess_binary = On
memcached.sess_sasl_username = 「your_ocs_name」
memcached.sess_sasl_password = 「your_ocs_password」
memcached.sess_locking = Off
舉例:
<?php
$memc = new Memcached();
$memc->setOption(Memcached::OPT_COMPRESSION, false);
$memc->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$memc->addServer(「be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com」, 11211);
$memc->setSaslAuthData(「your_ocs_name」, 「your_ocs_password」);
echo $memc->get(「memc.sess.key. ttrct9coa2q62r2sodlq4qf376″);
/*注意這里的key是有前綴的,由php.ini中memcached.sess_prefix欄位決定,默認值為「memc.sess.key.」。然後再拼接上面打出來的sessionid「ttrct9coa2q62r2sodlq4qf376」即可。*/
?>
該代碼輸出如下:
ocs_key|s:13:」session_value」;
即PHP SESSION已經成功寫入OCS。
❺ 如何讓php環境支持memcache
你是windows 還是linux ,如果linux需要在下載一個libevent插件去支持memcahe.我估計你是windwos.如果有需要Linux 再聯系我,下面我說下Windows的安裝方法:
1. 下載memcache的windows穩定版,解壓放某個盤下面,比如在c:\memcached
2. 在終端(也即cmd命令界面)下輸入 『c:\memcached\memcached.exe -d install』 安裝
3. 再輸入: 『c:\memcached\memcached.exe -d start』 啟動。NOTE: 以後memcached將作為windows的一個服務每次開機時自動啟動。這樣伺服器端已經安裝完畢了。
4.下載php_memcache.dll,請自己查找對應的php版本的文件
5. 在C:\winnt\php.ini 加入一行 『extension=php_memcache.dll』
6.重新啟動Apache,然後查看一下phpinfo,如果有memcache,那麼就說明安裝成功!
❻ 最近在學習memcached 我php的memcache擴展裝了,php.ini配置文件也加了extension=php_memcache.dll,
memcached.exe是伺服器需要啟動進程。php支持memcache和memcached。現在網上大部分是memcache擴展多,需要下載php_memcache.dll到ext擴展文件中,php.ini裡面將擴展開啟,到phpinfo裡面查看是否有此擴展,然後你就可以進行開發。
❼ 使用php Memcache模塊如何正確遍歷所有KEY以及VALUE
在php提供的用於與memcached交互的擴展模塊中有memcached與memcache,前者提供方法getAllKeys用於遍歷所有Memcached伺服器上的key,但是並不保證原子操作,而後者卻沒有提供任何方法,雖然在PHP官方
文檔中有人給出使用方法getExtendedStats來間接獲取Memcached伺服器上的所有key,但是給出的代碼是有不少坑的,如果拿來就用,對於cluster的memcached伺服器而言,有些問題就需要指出來。
下面將給出官方文檔中的代碼,並指出可能面臨的問題,代碼如下:
<?php
/**
*Functiontogetallmemcachekeys
*@authorManishPatel
*@Created:28-May-2010
*/
functiongetMemcacheKeys(){
$memcache=newMemcache;
$memcache->connect('127.0.0.1',11211)ordie("");
$list=array();
$allSlabs=$memcache->getExtendedStats('slabs');
$items=$memcache->getExtendedStats('items');
foreach($allSlabsas$server=>$slabs){
foreach($slabsAS$slabId=>$slabMeta){
$cmp=$memcache->getExtendedStats('cachemp',(int)$slabId);
foreach($cmpAS$keys=>$arrVal){
foreach($arrValAS$k=>$v){
echo$k."<br>";
}
}
}
}//EOgetMemcacheKeys()?>
在上述代碼中,如果用於獲取單個memcached伺服器上的key,是不存在任何問題,但是獲取連接池中的多個memcached所有key就存在問題,會發現列印出重復的key,問題就在於當使用getExtendedStats用去特定$slabID
上的信息時,返回的是連接池中所有的伺服器上的特定$slabId的存儲的keys信息。當$server為"127.0.0.1:11214"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
當$server為"127.0.0.1:11216"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
❽ 如何更新MemcacheD Is Your Friend緩存
步驟如下:
1、php安裝Memcached插件。
2、WordPress安裝Memcached緩存插件(MemcacheD Is Your Friend)。
3、部署Memcached內存緩存圖形化界面監控頁面。
❾ 如何在ubuntu 12.04上面為php5.6安裝memcached及擴展
apt-get install memcached
啟動memcached服務端,使用了memcache用戶來啟動。
memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
或者使用root用戶來啟動,都是可以的。
memcached -d -l 127.0.0.1 -p 11211 -m 64 -u root
將memcached服務端加入開機啟動,ubuntu 12.04上需要打開/etc/init.d/rc.local來添加,這與centos的也不一樣。
vi /etc/init.d/rc.local /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
或者用root用戶來啟動。
/usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 64 -u root
安裝memcached客戶端
客戶端的安裝分為安裝libmemcached和php的memcached擴展。
我們先安裝libmemcached,切換目錄。
cd /usr/local/src/
下載libmemcached包。考慮到是php5.6,它只能用php-memcached 2.2.0,為了兼容,所以只下載了libmemcached-1.0.18。其實,libmemcached已經有更新的版本了。
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
解壓libmemcached-1.0.18。
tar -zxf libmemcached-1.0.18.tar.gz
切換目錄到libmemcached-1.0.18。
cd libmemcached-1.0.18
開始編譯安裝。
./configure make make install
安裝完成後,我們找一下memcached.h是在那個目錄的,等下要用。
find / -name memcached.h/usr/local/include/libmemcached/memcached.h/usr/local/include/libmemcached-1.0/memcached.h/usr/local/include/libmemcached-1.0/struct/memcached.h/usr/local/src/libmemcached-1.0.18/libmemcached/memcached.h/usr/local/src/libmemcached-1.0.18/libmemcached-1.0/memcached.h/usr/local/src/libmemcached-1.0.18/libmemcached-1.0/struct/memcached.h/usr/local/src/libmemcached-1.0.18/libtest/memcached.h
切換目錄。
cd /usr/local/src/
下載php的擴展memcached-2.2.0。如果你是php7,請使用memcached 3x。
wget -c http://pecl.php.net/get/memcached-2.2.0.tgz
解壓memcached-2.2.0的包。
tar -zxf memcached-2.2.0.tgz
切換目錄到memcached-2.2.0。
cd memcached-2.2.0
在此目錄下執行phpize。如果不知道phpize在什麼地方,可以用find命令來查找。
/usr/local/php-5.6/bin/phpize
還是在此目錄執行./configure。--with-libmemcached-dir的目錄就是你剛剛查找出來的memcached.h的目錄,它是上面的第一條。include/libmemcached/是編譯時會自動查找的目錄,所以我們只需要填上/usr/local/就可以了。
./configure --with-php-config=/usr/local/php-5.6/bin/php-config --with-libmemcached-dir=/usr/local/ --disable-memcached-sasl Build complete.Don't forget to run 'make test'. Installing shared extensions: /usr/local/php-5.6/lib/php/extensions/no-debug-non-zts-20131226/
編譯安裝成功後,它提示在/usr/local/php-5.6/lib/php/extensions/no-debug-non-zts-20131226/。我們可以用find來查找一下memcached.so。
find / -name memcached.so/usr/local/php-5.6/lib/php/extensions/no-debug-non-zts-20131226/memcached.so/usr/local/src/memcached-2.2.0/moles/memcached.so/usr/local/src/memcached-2.2.0/.libs/memcached.so
用vi打開php.ini文件,如果你不知道使用的那個php.ini文件,可以使用phpinfo.php來查看。
vi /home/wwwroot/lamp/etc/php.ini
在php.ini末尾添加下面的代碼。
extension = /usr/local/php-5.6/lib/php/extensions/no-debug-non-zts-20131226/memcached.so
重啟php-fpm
ps aux|grep php-fpm kill -USR2 11473