本教程叫你如何将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. DIY微型操作系统(1)—— 开发的准备

    这个连载是根据<30天自制操作系统>这本书所写 只是类似于补充之类的东西,要详细的讲解,还请参照书上的内容 所以,首先我们要感谢作者川合秀实先生!(鞠躬) 为什么我想写这么一个补充的? 因 ...

  2. HTTPS 通俗简介

    为什么需要HTTPS 9个问题搞懂 https 来源 HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理 等. 举个最常见的例 ...

  3. pip删除依赖、配置虚拟环境

    问题:跑openpose代码的时候,出现问题 tensorpack 0.8.6 requires tqdm>4.11.1, which is not installed.tf-pose 0.1. ...

  4. [LeetCode&Python] Problem 637. Average of Levels in Binary Tree

    Given a non-empty binary tree, return the average value of the nodes on each level in the form of an ...

  5. Potplayer快捷键

    potplayer 滞后快捷键: x potplayer 滞后快捷键: c Crtl+C:截图到剪切板 Crtl+E:截图到安装目录Capture

  6. Arpa’s obvious problem and Mehrdad’s terrible solution 思维

    There are some beautiful girls in Arpa’s land as mentioned before. Once Arpa came up with an obvious ...

  7. mysql query 条件中为空时忽略

    ☆. q.ques_group传入为null或''的时候不查询此条件: value AND (q.ques_group = :quesGroup or :quesGroup is null or :q ...

  8. (机器学习)小试牛刀 利用Zapier和MonkeyLearn

    MonkeyLearn + Zapier Integration(阅者注:本文介绍如何用Zapier和MonkeyLearn将机器学习实际应用到工作当中,比如:客户咨询和投诉管理,营销邮件管理) We ...

  9. MySQL--DROP TABLE与MySQL版本

    ======================================================================== DROP TABLE与MySQL版本 MySQL在5. ...

  10. day27 python学习 logging

    logging模块 函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging ...