首页 > php安装 > Drupal7中配置Memcache方法详解

Drupal7中配置Memcache方法详解

Memcache的配置就不多说,drupal由于模块较多,数据库调用频繁,因此memcache是drupal站点中必备的配置,本文大概列一下Drupal7中关于memcache的配置情况,以方便大家查阅。

1.安装memcache服务以及启动memcached.

2.安装drupal的memcache模块.(http://drupal.org/project/memcache)

3.配置settings.php

实例代码如下:

$conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc'; 
// The 'cache_form' bin must be assigned no non-volatile storage. 
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache'; 
$conf['cache_default_class'] = 'MemCacheDrupal'; 
$conf['memcache_key_prefix'] = 'something_unique';

注意,需要将memcache.inc的文件路径写正确,如Drupal模块目录组织方式总结中提到,我们一般将memcache模块会放置在contrib文件夹下面,因此路径可能是 sites/all/modules/contrib/memcache/memcache.inc,此外memcache_key_prefix最好设置一下。

4.多个memcachd服务。

默认情况下,如果不配置memcache_servers以及memcache_bins的话,Drupal会认为只有一个server,即127.0.0.1:11211,如果有多个memcache实例的话,需要添加如下配置,代码如下:

$conf['memcache_servers'] = array( 
'10.1.1.1:11211' => 'default', 
'10.1.1.1:11212' => 'default', 
'10.1.1.2:11211' => 'default', 
'10.1.1.3:11211' => 'cluster2', 
'10.1.1.4:11211' => 'cluster2' 
); 
$conf['memcache_bins'] = array( 
'cache'  => 'default', 
'cache_filter' => 'cluster2', 
'cache_menu' => 'cluster2' 
);

一切就绪,最后讲解一下单台机器如何配置多个memcache实例,即单台机器的memcache集群搭建。

我们需要修改2个文件,一个是启动脚本/etc/init.d/memcached-multi,另一个是配置文件/etc/sysconfig/memcached,代码如下:

/etc/sysconfig/memcached

是用来配置多个memcache实例的大小,代码如下:

PORT="11211" 
USER="memcached" 
MAXCONN="1024" 
CACHESIZE="512" 
OPTIONS="" 
MULTIBUCKET="2" 
CACHESIZEARRAY[1]="1024" 
CACHESIZEARRAY[2]="128"/etc/init.d/memcached-multi

是用来启动memcache集群,(start、stop、restart),代码如下:

#! /bin/sh 
# 
# chkconfig: - 55 45 
# description:    The memcached daemon is a network memory cache service. 
# processname: memcached 
# config: /etc/sysconfig/memcached 
# pidfile: /var/run/memcached/memcached.pid 

# Standard LSB functions 
#. /lib/lsb/init-functions 

# Source function library. 
. /etc/init.d/functions 

PORT=11211 
USER=memcached 
MAXCONN=1024 
CACHESIZE=64 
OPTIONS="" 
MULTIBUCKET="" 

if [ -f /etc/sysconfig/memcached ];then 
. /etc/sysconfig/memcached 
fi 

[ -z "$MULTIBUCKET" ] && MULTIBUCKET=1 

# Check that networking is up. 
. /etc/sysconfig/network 

if [ "$NETWORKING" = "no" ] 
then 
exit 0 
fi 

RETVAL=0 
prog="memcached" 

start () { 
echo -n $"Starting $prog: " 
# insure that /var/run/memcached has proper permissions 
if [ "`stat -c %U /var/run/memcached`" != "$USER" ]; then 
	chown $USER /var/run/memcached 
fi 

for i in `/usr/bin/seq 1 $MULTIBUCKET`; do 
	THISCACHESIZE=$CACHESIZE 
	[ ${#CACHESIZEARRAY[*]} -gt 0 -a ${CACHESIZEARRAY[$i]:-0} -gt 0 ] && THISCACHESIZE=${CACHESIZEARRAY[$i]} 
	daemon --pidfile /var/run/memcached/memcached.pid memcached -d -p $PORT -u $USER  -m $THISCACHESIZE -c $MAXCONN -P /var/run/memcached/memcached-$i.pid $OPTIONS 
	let RETVAL=$RETVAL+$? 
	let PORT=$PORT+1 
done 
echo 
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached 
} 
stop () { 
echo -n $"Stopping $prog: " 
for i in `/usr/bin/seq 1 $MULTIBUCKET`; do 
	killproc -p /var/run/memcached/memcached-$i.pid /usr/bin/memcached 
	let RETVAL=$RETVAL+$? 
done 
echo 
if [ $RETVAL -eq 0 ] ; then 
	rm -f /var/lock/subsys/memcached 
	rm -f /var/run/memcached.pid 
fi 
} 

restart () { 
	stop 
	start 
} 

# See how we were called. 
case "$1" in 
start) 
start 
;; 
stop) 
stop 
;; 
status) 
echo "Warning: This status check is laughable.  Inspect netstat or ps output manually." 
status memcached 
;; 
restart|reload|force-reload) 
restart 
;; 
condrestart) 
[ -f /var/lock/subsys/memcached ] && restart || : 
;; 
*) 
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" 
exit 1 
esac
exit $RETVAL

至此一些就绪.

本文地址:http://www.phprm.com/install/fs1155.html

转载随意,但请附上文章地址:-)

标签:memcache 配置 drupal7

相关文章

发表留言