首先提下memcached 是守护进程,memcache是PHP扩展这点大家知道,别搞错了 !

操作系统:centos

服务器WEB:192.168.210

服务器WEB:192.168.209

  •  第一部分:安装PHP扩展memcache (两台)
    1. tar -zxf memcache-2.2.6.tgz
    2. cd memcache-2.2.6
    3. /usr/local/php/bin/phpize
    4. ./configure --with-php-config=/usr/local/php/bin/php-config
    5. make
    6. make install
    7. vi /usr/local/php/etc/php.ini 
    8. extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626" #no-debug-non-zts-20090626这个目录跟据你自己实际得到名称修改
       extension = "memcache.so"

 

  • 第二部分:安装memcached (两台二选1)
    1. tar -zxf memcached-1.4.14.tar.gz
    2. cd memcached-1.4.14
    3. ./configure
    4. make
    5. make install
    6. /usr/local/bin/memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 256 #启动服务,具体参数值自行修改,注意打开防火墙端口

 

 

  • 第三部分:测试(重要)
    1. vi /usr/local/php/etc/php.ini
    2. session.save_handler = "memcache" #存储方式
    3. session.save_path = "tcp://192.168.1.210:11211"  #session 存储路经
    4.  
    5. 另一种方式就是 PHP程序里面写入
    6. ini_set("session.save_handler", "memcache");
      ini_set("session.save_path", "tcp://192.168.1.210:11211");
    7.  
    8. 此程序是网上摘录
    9. vi session.php #进入192.168.2.210 输入
    10. <?php
      session_start();
      if (!isset($_SESSION['TEST'])) {
          $_SESSION['TEST'] = time();
      }
    11. $_SESSION['TEST3'] = time();
    12. print $_SESSION['TEST'];
      print "<br><br>";
      print $_SESSION['TEST3'];
      print "<br><br>";
      print session_id();
      ?>
    13. 运行结果如下
    14. 1346805490

      1346805568

      c0o46kuhnaokd70g6677ta76 #把这串数值输入到如下程序内
    15. vi get.php  #进入192.168.2.209  输入
    16. <?php
      $memcache = memcache_connect('192.168.2.210', 11211);
      var_dump($memcache->get('c0o46kuhnaokd70g6677ta7601'));
      ?>
    17. 运行结果如下
    18. string(37) "TEST|i:1346805490;TEST3|i:1346805568;"  #证明成功
    19. bool(false)  #出现这句就证成,配置不正确,请仔细检查
    20. 特别提醒:建义/usr/local/php/bin/php sessin.php | get.php 使用程序直接跑报错信息很详细,方便排查
  •   
  • 第4部自写的memcached启动脚本
    1. ./memcache.py stop|start|restart 格式
    2. 如下源码:
    3.  
      1. #!/usr/bin/python 
      2. # 
      3. import sys 
      4. import os 
      5.  
      6. #This is geting arguments 
      7. AGRV=''.join(sys.argv[1:]) 
      8.  
      9. #The memcache run argument of script 
      10. MEM_BIN='/usr/local/bin/memcached' 
      11. MEM_CACHE= '32m' 
      12. MEM_PORT='11211' 
      13. MEM_USER='root' 
      14. MEM_PID='/var/run/' 
      15. MEM_PID_FILE='memcached.pid' 
      16. MEM_THREAD='256' 
      17. MEM_STOP='daemon kill -9 `cat /var/run/memcached.pid`' 
      18.  
      19.  
      20. #The memcache commands 
      21. MEM_EXEC='daemon %s -m %s -p %s -d -u %s -P %s -c %s'%(MEM_BIN,MEM_CACHE,MEM_PORT,MEM_USER,MEM_PID+MEM_PID_FILE,MEM_THREAD) 
      22.  
      23.  
      24. #Source function library. 
      25. FUN_LIB='. /etc/rc.d/init.d/functions&&' 
      26.  
      27.  
      28. #Starting memcahce function. 
      29. def start(): 
      30.     if os.path.isfile(MEM_PID+MEM_PID_FILE): 
      31.         print "memcache already is runing ...." 
      32.     else
      33.         if os.system(FUN_LIB+MEM_EXEC) == 0
      34.             print "Starting memcache:" 
      35.  
      36.  
      37. def stop(): 
      38.     if os.system(FUN_LIB+MEM_STOP) == 0
      39.     os.remove(MEM_PID+MEM_PID_FILE) 
      40.         print "Stoping memcache:" 
      41.      
      42. def restart(): 
      43.     stop() 
      44.     start() 
      45.  
      46.  
      47.  
      48.  
      49. #The program decide start|stop|restart 
      50. if AGRV.upper() == 'START'
      51.     start() 
      52.  
      53. elif AGRV.upper() == 'STOP'
      54.     stop() 
      55.  
      56. elif AGRV.upper() == 'RESTART'
      57.     restart() 
      58.  
      59. else
      60.     print 'Please input argument(start|stop|restart)' 
      61.