本教程叫你如何将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。收工!

php session保存到memcache或者memcached中的更多相关文章

  1. PHP如何将session保存到memcached中?如何分布式保存PHP session

    session_set_save_handler无关的memcached保存session的方法 在memcached服务器上 1)下载memcached #wget http://memcached ...

  2. 利用session_set_save_handler()函数将session保存到MySQL数据库中

    PHP保存session默认的是采用的文件的方式来保存的,这仅仅在文件的空间开销很小的windows上是可以采用的,但是如果我们采用uinx或者是liux上的文件系统的时候,这样的文件系统的文件空间开 ...

  3. [redis] session 保存到 redis 简单实现

    参考资料: [session保存到redis简单实现]http://blog.csdn.net/ppt0501/article/details/46700221 [Redis学习]http://blo ...

  4. Asp.net Session 保存到MySql中

    一 网站项目引入"mysql.web.dll" 二 web.config配置中添加mysql数据库连接字符串 <connectionStrings> <remov ...

  5. PHP操作:将数据库中的数据保存到Word、Excel中。

    1.首先要把word.excel表放到文件的根目录下 2.定义了一个word类 <?php class word { function start() { ob_start(); ob_star ...

  6. 将mat文件中的数据按要求保存到txt文档中(批处理)

    之前有个老朋友,让帮忙将一个mat中的数据重新保存到txt中,由于数据比较多需要用到批处理,之前弄过很多次,但每次一到要用的时候总是忘记怎么写了,现在记录一下,免得后面老是需要上网搜.这里先说一个比较 ...

  7. 使用 PDO 方式将 Session 保存到 MySQL 数据中

    类: <?php /* 使用数据库保存session */ class DBHandler implements SessionHandlerInterface { protected $dbh ...

  8. C#读取shp文件并获取图形保存到sde要素类中(不使用ESRI的类库,纯c#实现)

    说明:首先要将sde要素类发布成对应的要素服务,通过对要素服务的操作,实现数据在sde要素类中的增删 //向服务器发出请求 public string getPostData(string postS ...

  9. Springboot 2.1.1.RELEASE 版本 session保存到MySQL里面

    1,pom.xml添加依赖: <!-- 数据库session管理 --> <dependency> <groupId>org.springframework.ses ...

随机推荐

  1. Linux C:access()时间条件竞争漏洞

    access()函数用来检查调用进程是否可以对指定的文件执行某种操作. ================================================================ ...

  2. gradle仓库配置

    Android Studio使用Gradle构建app.Gradle的使用非常灵活,其中可以设置使用多种类型的仓库,来获取应用中使用的库文件.  支持的类型有如下几种: 类型 说明 Maven cen ...

  3. for-auto使用

    前言 c++11新增了一个工具,让编译器能够根据初始值的类型推断变量的类型: c++11还新增了一种循环,基于范围的for循环,可以对数组或者容器类的每一个元素执行相同的操作:同时,可以使用& ...

  4. Springboot中的连接池

    pom.xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-ja ...

  5. STM32 输入捕获配置

    在STM32 的定时器,除了 TIM6 和 TIM7,就是通过检测 TIMx_CHx 上的 边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候, 将当时定时器 的值(TIMx_CNT) 存放到对 ...

  6. 20分钟打造你的Bootstrap站点

    来源:http://www.w3cplus.com/css/twitter-bootstrap-tutorial.html 特别声明:此篇文章由白牙根据Leon Revill的英文文章原名<Tw ...

  7. 谈ObjC对象的两段构造模式

    前言 Objective-c语言在申请对象的时,需要使用两段构造(Two Stage Creation)的模式.一个对象的创建,需要先调用alloc方法或allocWithZone方法,再调用init ...

  8. 迭代器Iterator的底层实现原理

    第一步:没有接口的迭代器简单实现原理 package com.bjsxt.xiaofei; /** * 迭代器底层原理 * 方法: * hasNext() * next() * remove() * ...

  9. leetcode:Pascal's Triangle【Python版】

    1.这道题一次提交就AC了: 2.以前用C语言实现的话,初始化二维数组全部为0,然后每行第一个元素为1,只需要用a[i][j] = a[i-1][j]+a[i-1][j-1]就可以了: 3.在Pyth ...

  10. XDomainRequest object

    The XDomainRequest object has these types of members: Events Methods Properties Events The XDomainRe ...