• php session保存到memcache或者memcached中


    本教程叫你如何将php 的session存储在 memcached中,参考了好多网页,发现错误百出,最后自己还是测试成功了,现在将结果结果分享。

    1-)系统环境 : elastix2.4 (centos5.9 x86_64) ,其中php版本是古董级的 php 5.1.6

    这里要说明的是:php的版本和安装php的memcached扩展有相当大的关系。

    2-)安装memcached server端程序,如下:

    [root@elastix82 ~]# yum -y install memcached
    [root@elastix82 ~]# rpm -qa|grep memcache
    libmemcached-0.31-1.1.el5
    memcached-1.4.5-1.el5
    libmemcached-0.31-1.1.el5
    libmemcached-devel-0.31-1.1.el5
    libmemcached-devel-0.
    不需要任何配置,启动memcached服务器进程
    [root@elastix82 ~]# /etc/init.d/memcached start
    Starting memcached:                                        [  OK  ]
    [root@elastix82 ~]#
    [root@elastix82 ~]# lsof -i:11211
    COMMAND     PID      USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    memcached 28227 memcached   26u  IPv4 536953      0t0  TCP *:11211 (LISTEN)
    memcached 28227 memcached   27u  IPv4 536956      0t0  UDP *:11211
    [root@elastix82 ~]#

    3-)给centos5.9自带的php安装 memcached扩展
    参考了如下网站:
    http://pecl.php.net/package/memcached
    下面几个是参考方法,其实都有错误
    http://koda.iteye.com/blog/466667
    http://imysql.cn/node/215
    下面是排错参考网站:
    http://cn2.php.net/manual/zh/book.memcache.php
    http://sndapk.blog.51cto.com/5385144/945441
    http://stackoverflow.com/questions/4057777/php-cant-find-save-handler-memcache

    总之参考网上乱七八糟的方法,发现网上流传的方法存在如下bug:
    1)网上大多是说,修改php.ini如下后即可以实现 session存入memcached中,
    session.save_handler = memcache   【有错误,具体情况具体写法】
    session.save_path = "tcp://127.0.0.1:11211"
    其实,据我搜资料,有一个叫memcache和memcached的扩展,我成功测试的是在官网上下载的memcached这个扩展
    http://pecl.php.net/package/memcached
    所以我的 session.save_handler = memcached ,而不是网上前篇一律的 session.save_handler = memcache。否则,从apache的错误访问日志中可以看到如下:
    [root@elastix82 html]# tailf /var/log/httpd/error_log
    [Fri Sep 13 15:25:35 2013] [error] [client 192.168.1.79] PHP Warning:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot find save handler memcache in /var/www/html/ss.php on line 2
    [Fri Sep 13 15:26:47 2013] [notice] caught SIGTERM, shutting down
    原因是,不认识 memcache 这个 handler。
    2) 强烈鄙视网上抄袭来抄袭去的,不负责任的教程。搜了好多好多相关文章,几乎没有一篇说过实现这个功能需要php安装memcach或者memcached扩展,都仅仅只是说了要修改php.ini的两行而已。本人在这里强调一次,要实行php session存入memcached,需要添加php的memcached扩展,扩展下载地址为:
    http://pecl.php.net/package/memcached
    3) 在安装php的memcached扩展过程中,还是件头疼的事情,原因后来找到了——高版本的memcached不在支持以前老版本的php,比如我的就是php 5.1.6 ,古董级了。后来我硬是下了3个版本的memcached,才把它装上。我用的版本是 memcached-0.1.4 ,其它两个高版本无法安装上。官网也给出了说明,需要php version > 5.2
    [root@elastix82 session]# ls
    memcached-0.1.4  memcached-0.1.4.tgz  memcached-1.0.2  memcached-1.0.2.tgz  memcached-2.1.0  memcached-2.1.0.tgz
    [root@elastix82 session]#
    4) 扩展安装方法:
    可能编译用到如下库
    [root@elastix82 ~]# yum -y install libmemcached libmemcached-devel
    剩下的 就是 phpize 和 ./configure --with-php-config=/usr/bin/php-config ,以及复制*.so 到 php的modules/目录,并修改php.ini ,最后phpinfo结果如下:
    [root@elastix82 ~]# php --info |grep -i memcache
    memcached
    memcached support => enabled
    libmemcached version => 0.31
    Registered save handlers => files user memcached
    session.save_handler => memcached => memcached
    [root@elastix82 ~]#

    4-)安装完成后重启apache,一切ok。收工!

  • 相关阅读:
    Ubuntu 12.10使用apt安装Oracle/Sun JDK
    织梦(dedecms)系统常用全局变量调用标签及路径
    Lighttpd虚拟主机和多域名的配置
    Ubuntu解压命令大全
    OFBiz终于起航了
    eclipse 安装gradle 插件的三种方式
    验证码
    session的使用
    实验二
    作业2(魔术)
  • 原文地址:https://www.cnblogs.com/voiphudong/p/3319429.html
Copyright © 2020-2023  润新知