手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Memcached的安装配置及将PHP的session保存在Memcached中

[日期:2017-02-16] 来源:Linux社区  作者:11107124 [字体: ]

如何让PHP使用memcached?(装memcached的客户端)

PHP要结合memcached必须依赖memcached的客户端库(也称为扩展),对于PHP来说其客户端库有两种,memcache和memcached,其中memcached功能更强大。而对Perl来说其所依赖的客户端库为cache:memcached模块。

简单来说memcached为memcached的服务器端,要让php在memcached服务器端缓存数据,就必须在在php所在server上装一个memcached的客户端(扩展),而这客户端有两种,一个叫memcache,另一个叫memcached(比较高级)

对于C/C++来说其必须依赖libmemcached

下面将演示PHP扩展memcached扩展(要先安装libmemcached),如果安装memcache扩展则不用装libmemcached

如果你要用memcache扩展下载可以点这个链接http://pecl.php.net/package/memcache

这个链接可以下载memcached http://pecl.php.net/package/memcached

  [root@node1 tool]#wget  https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

  [root@node1 tool]# tar -xf libmemcached-1.0.18.tar.gz

  [root@node1 tool]# cd libmemcached-1.0.18

  [root@node1 libmemcached-1.0.18]# ./configure --prefix=/usr/local/libmemcached --with-memcached

  [root@node1 libmemcached-1.0.18]#make && make install

   
  [root@node1 tool]#tar -xf memcached-2.2.0.tgz

  [root@node1 tool]#cd memcached-2.2.0

  [root@node1 memcached-2.2.0]#/usr/local/php/bin/phpize

  [root@node1 memcached-2.2.0]#./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcached --with-libmemcached-dir=/usr/local/libmemcached

  [root@node1 memcached-2.2.0]#make && make install

  [root@node1 memcached-2.2.0]#vim /etc/php.d/memcache.ini

    extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcached.so

  [root@node1 memcached-2.2.0]#service php-fpm restart

    启用Nginx转发php功能

      [root@node1 ~]# vi /etc/nginx/nginx.conf

    location ~ \.php$ {

            root          /web/read;

            fastcgi_pass  127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

            include        fastcgi_params;

          }

      [root@node1 ~]# service nginx reload

可以看到memcached扩展已近完成

Nginx结合memcached

[root@node1 ~]# vim /etc/nginx/nginx.conf

server {

        listen      80;

        server_name  www.linuxidc.com;

    location / {

              set $memcached_key $uri;#set 键名$memcached_key 键$uri;

              memcached_pass  127.0.0.1:11211; #memcached服务器IP:port

              default_type    text/html; #默认缓存纯文本的内容

              error_page    404 @fallback; #如果返回404错误(即memcached中没有相                                    应的缓存),则转发给fallback

        }

        location @fallback {

                proxy_pass http://172.16.0.1; #反向代理到后端172.16.0.1处理请求

        }

}

配置php将它的会话(session)保存至memcached中

前提:

1、配置各php支持使用memcache;

2、安装配置好memcached服务器,这里假设其地址为172.16.200.11,端口为11211;

编辑php.ini文件,确保如下两个参数的值分别如下所示:

  [root@node1 ~]# vim /etc/php.ini

session.save_handler = memcache

session.save_path = "tcp://192.168.139.2:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

tcp://172.16.200.11:11211?是你的memcached服务器端的IP:port

?persistent=1 ?传递参数,persistent表示持久连接

timeout=1 超时时间为1秒

retry_interval=15 重视时间为15秒

新建php页面setsess.php,为客户端设置启用session:

[root@node1 ~]# vim /web/read/setsess.php

<?php

session_start();

if (!isset($_SESSION['www.zxl.com'])) {

  $_SESSION['www.zxl.com'] = time();

}

print $_SESSION['www.zxl.com'];

print "<br><br>";

print "Session ID: " . session_id();

?>

新建php页面showsess.php,获取当前用户的会话ID:

[root@node1 ~]# vim /web/read/showsess.php

<?php

session_start();

$memcache_obj = new Memcache;

$memcache_obj->connect('192.168.139.2', 11211);

$mysess=session_id();

var_dump($memcache_obj->get($mysess));

$memcache_obj->close();

?>

然后用浏览器分别访问setsess.php和showsess.php

会看到session信息已近保存在了memcached中

安装memcached的web界面管理工具memadmin

[root@node1 tool]#tar -xf memadmin-1.0.12.tar.gz

[root@node1 tool]#mv memadmin /web/read/

[root@node1 tool]#cd /web/read/

  配置文件如下,可以修改用户和密码

[root@node1 read]# vim memadmin/config.php

<?php

if (!defined('IN_MADM')) exit();

$config['user'] = "admin"; // your username

$config['passwd'] = "admin"; // your password

然后你用浏览器就行web界面访问http://192.18.139.2/memadmin

 

可以看到memadmin已近安装完成

为编译安装的Memcached配置启动脚本,Memcached SysV的startup脚本代码如下所示,将其建立为/etc/init.d/memcached文件:

[root@node1 ~]# vim /etc/init.d/memcached

#!/bin/bash

#

# Init file for memcached

#

# chkconfig: - 86 14

# description: Distributed memory caching daemon

#

# processname: memcached

# config: /etc/sysconfig/memcached

. /etc/rc.d/init.d/functions

## Default variables

PORT="11211"

USER="nobody"

MAXCONN="1024"

CACHESIZE="64"

OPTIONS=""

RETVAL=0

prog="/usr/local/memcached/bin/memcached"

desc="Distributed memory caching"

lockfile="/var/lock/subsys/memcached"

start() {

        echo -n $"Starting $desc (memcached): "

        daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE -o "$OPTIONS"

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && touch $lockfile

        return $RETVAL

}

stop() {

        echo -n $"Shutting down $desc (memcached): "

        killproc $prog

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && rm -f $lockfile

        return $RETVAL

}

restart() {

        stop

        start

}

reload() {

        echo -n $"Reloading $desc ($prog): "

        killproc $prog -HUP

        RETVAL=$?

        echo

        return $RETVAL

}

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart)

        restart

        ;;

  condrestart)

        [ -e $lockfile ] && restart

        RETVAL=$?

        ;;     

  reload)

        reload

        ;;

  status)

        status $prog

        RETVAL=$?

        ;;

  *)

        echo $"Usage: $0 {start|stop|restart|condrestart|status}"

        RETVAL=1

esac

exit $RETVAL

使用如下命令配置memcached成为系统服务:

[root@node1 ~]# chmod +x /etc/init.d/memcached

[root@node1 ~]# chkconfig --add memcached

[root@node1 ~]# service memcached start

Starting Distributed memory caching (memcached):          [  OK  ]

本次实验完成!

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-02/140679.htm

linux
相关资讯       Memcached  Memcached安装配置 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款