好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Drupal7中配置Memcache方法详解 - php环境安装

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  

    至此一些就绪.

    查看更多关于Drupal7中配置Memcache方法详解 - php环境安装的详细内容...

  •   阅读:50次