開發環境:
1) Apache/PHP均為 mac os x 10.6自帶.
2) mysql采用brew install mysql安裝的
3) drupal版本為6.
步驟:
1) 安裝 memcached 服務
可以采用brew install memcached的方式安裝memcached
(非mac平臺均可以采用包安裝的方式:
http://nexus.rewaz.co.cc/theonly92/entry-34.html
http://www.sohailriaz.com/how-to-install-memcached-with-memcache-php-extension-on-centos-5x/)
安裝完后啟動就不詳細描述了. 可以/etc/init.d/memcached start或者直接手工memcached -d. 反正默認端口就是了.
2) 安裝php memcached擴展
因為memcached擴展相對來說是個外部的擴展, 所以我們mac附帶的php自身沒有包含這個擴展, 只能手工編譯. (只要有phpize, 一切都可以搞定, 有個細節:
yarco@macbook ~$ file `which php`
/usr/bin/php: Mach-O universal binary with 3 architectures
/usr/bin/php (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/php (for architecture i386): Mach-O executable i386
/usr/bin/php (for architecture ppc7400): Mach-O executable ppc
看,有三個架構. 我們希望我們編譯的東西也有三個架構...)
a. 下載源代碼 pecl.php.net/get/memcache-2.2.5.tgz .解壓
b. 進入源代碼的目錄, phpize
macbook:memcache-2.2.5 root# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
c. 三個架構
macbook:memcache-2.2.5 root# LDFLAGS='-arch ppc -arch i386 -arch x86_64' ./configure
然后 make, 看看結果哦...
macbook:memcache-2.2.5 root# file modules/memcache.so
modules/memcache.so: Mach-O universal binary with 3 architectures
modules/memcache.so (for architecture ppc): Mach-O bundle ppc
modules/memcache.so (for architecture i386): Mach-O bundle i386
modules/memcache.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
d. 安裝擴展和配置
把上面的memcache.so拷貝到extension_dir里. 然后在php.ini里增加:
extension=memcache.so
和
[memcache]
memcache.hash_strategy = "consistent" # 這個是drupal的memcache模塊需要
e. 測試. 把下面內容保存為test.php, 然后命令行下執行 php test.php. 如果沒問題,就說明php的擴展安裝ok. 能用了
<?php
$memcache_obj = memcache_connect("localhost", 11211);
$data = array('name' => 'yarco', 'age' => 30, 'sex' => 'male');
/* procedural API */
memcache_add($memcache_obj, 'var_key', $data, false, 30);
print_r(memcache_get($memcache_obj, 'var_key'));
memcache_delete($memcache_obj, 'var_key');
/* OO API */
$memcache_obj->add('var_key', "test variable 2\n", false, 30);
print_r($memcache_obj->get('var_key'));
$memcache_obj->delete('var_key');
?>
f. 重啟apache
3) 安裝drupal memcache模塊
a. 下載 ftp.drupal.org/files/projects/memcache-6.x-1.5.tar.gz
b. 保存到 modules/ 目錄,解壓(就像一般的模塊)
c. 額外做2件事:
* 拷貝這個文件到include下
cp memcache/memcache.inc ../../html/includes/
* 修改配置文件,增加
yarco@macbook default$ tail settings.php
*
* Remove the leading hash signs to enable.
*/
# $conf['locale_custom_strings_en'] = array(
# 'forum' => 'Discussion board',
# '@count min' => '@count minutes',
# );
$conf['cache_inc'] = './sites/all/modules/contrib/memcache/memcache.inc'; // 具體路徑看你memcache.inc的位置
d. 實際上這樣已經裝好了memcache. 如果你希望獲知更多的信息可以安裝一下位于Caching => Memcache Admin
以下是啟用了 devel 的sql查詢信息后的比較(但在安裝了memcache之后第一次執行數字會稍大, 很容易想到):
沒有memcache的情況

有了memcache的情況

大約會減少 40%的數據庫查詢 和 一半的查詢時間.
注:
在開發環境里裝這個似乎不太好.