开发环境:
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%的数据库查询 和 一半的查询时间.
注:
在开发环境里装这个似乎不太好.