加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.com.cn/)- 数据开发、人脸识别、智能机器人、图像处理、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Drupal7中配置Memcache方法详解

发布时间:2022-08-04 12:56:07 所属栏目:PHP教程 来源:互联网
导读:Memcache的配置就不多说,drupal由于模块较多,数据库调用频繁,因此memcache是drupal站点中必备的配置,本文大概列一下Drupal7中关于memcache的配置情况,以方便大家查阅。 1.安装memcache服务以及启动memcached. 2.安装drupal的memcache模块.(http://drupal.org
  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
  }
   

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读