CentOS 6.5用Memcached 来作PHP 的session.save_handler

php有两个memcache模块,一个是php-memcache,一个是php-memcached,php-memcached是最新的,也是比较稳定的,网上的太多的资料都是关于php-memcache的,太少提到php-memcached,而php-memcached的配置跟php-memcache是有所不同的。我的环境是多台webServer,全安装了nginx+php,3台memcached 服务器

webserver_IP:192.168.10.9—-22

memcachedserver_IP:192.168.10.23–25

一、先安装好web服务器,LNMP一键安装,此处就不多加强调了。

二、安装memcached服务器。

三、在所有的webServer上安装php扩展,

安装包:

memcached 服务器端所需:

  • libevent-2.0.21-stable.tar.gz
  • memcached-1.4.24.tar.gz 

支持PHP扩展所需:

  • libmemcached-1.0.18.tar.gz
  • memcached-2.2.0.tgz

在memcached服务器端:

1、安装libevent-2.0.21-stable

wget http://nchc.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz

tar xzvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.10-stable

./configure –prefix=/usr
make && make install

2、安装memcached-1.4.24

wget http://www.memcached.org/files//memcached-1.4.24.tar.gz

cd /software

tar xzvf memcached-1.4.24.tar.gz

cd memcached-1.4.24

./configure –prefix=/usr/local/memcached –with-libevent=/usr/local/

make && make install

3、启动memcached

/usr/local/memcached/bin/memcached -d -m 10000 -p 11211 -u root -c 4096 -P /usr/local/memcached/logs/memcached.pid

执行后,远程登录任意一台memcached服务器,可以用以下办法查看执行状态

telnet 192.168.10.23 11211

stats

STAT pid 11568
STAT uptime 5910
STAT time 1241876672
STAT version 1.2.8
STAT pointer_size 32
STAT rusage_user 0.751885
STAT rusage_system 1.584759
STAT curr_items 2615
STAT total_items 36753
STAT bytes 244835
STAT curr_connections 3
STAT total_connections 18427
STAT connection_structures 36
STAT cmd_flush 0
STAT cmd_get 18388
STAT cmd_set 38334
STAT get_hits 15717
STAT get_misses 2671
STAT evictions 0
STAT bytes_read 4924864
STAT bytes_written 1992526
STAT limit_maxbytes 134217728
STAT threads 2
STAT accepting_conns 1
STAT listen_disabled_num 0
END
有以上信息出现,表明启动成功!

4、加入开机启动

vim /etc/rc.local 

#最后一行加入:

/usr/local/memcached/bin/memcached -d -m 10000 -p 11211 -u root -c 4096 -P /usr/local/memcached/logs/memcached.pid

在webserver上安装,实现扩展

1、安装zlib

yum install zlib

2、安装libmemcached

wget https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz

tar zxvf libmemcached-0.26.tar.gz

cd libmemcached-0.26
./configure –prefix=/usr/local/libmemcached/

make && make install

3、安装php-memcached模块

wget http://pecl.php.net/get/memcached-2.2.0.tgz

2.2.0stable2014-04-01memcached-2.2.0.tgz (68.8kB)

tar -zxvf memcached-2.2.0.tgz

cd  memcached-2.2.0

phpize
./configure –with-php-config=/usr/bin/php-config –enable-memcache –with-libmemcached-dir=/usr/local/libmemcached

make 

 make install

make install 结束后:

[root@host23 memcached-2.2.0]# make install

Installing shared extensions:     /Data/app/php/lib/php/extensions/no-debug-non-zts-20131226/

4、编辑php.ini

vim /etc/php.ini

修改extension_dir的路径为你的

默认的是:

extension_dir= “./”

可以修改为:

extension_dir= “./”

在文件最后加入:

extension = “/Data/app/php/lib/php/extensions/no-debug-non-zts-20131226/

也可以不修改extension的路径,直接在最后添加:

extension = “/Data/app/php/lib/php/extensions/no-debug-non-zts-20131226/memcached.so”

修改php.ini

session.save_handler = files  -> session.save_handler = memcached
session.save_path = “/var/lib/php/session” -> session.save_path = “192.168.10.23:11211;/opt/”

9、重启apache

service httpd restart

测试:

vim test.php

<?php

$memcache_obj = new Memcached();

$memcache_obj->addServer(‘192.168.1.23’, 11211); 

$memcache_obj->set(‘key’,’memcache 测试!’,false, 10) or die (“Failed to save data at the server”);

echo $memcache_obj->get(‘key’);

?>

 

:wq

# /usr/local/php/bin/php   test.php

[root@host9 myscripts]# /Data/app/php5.6.11/bin/php testmem2.php

memcache 测试!

[root@host9 myscripts]# 

[root@host9 myscripts]# vim testmem2.php 将192.168.1.23改成一错的,192.168.1.231,保存再测试。

[root@host9 myscripts]# /Data/app/php5.6.11/bin/php testmem2.php

Failed to save data at the server

[root@host9 myscripts]#

1、安装libmemcached需要先安装zlib

2、php.ini文件的配置,php-memcached模块跟php-memcache不同,要设成是memcached,这个在phpinfo页面的Registered save handlers可以看到。如果设置不正确,会有”Cannot find save handler memcache”的错误提示。

3、session.save_path几乎所有的资料都是session.save_path = “tcp://127.0.0.1:11211″,但这可能在memcaceh是这样用的,我没有验证,我一开始也是这样设置,但一直出现”Failed to write session data (memcached)”的错误,找了很入也没找到是什么原因,后来在php.net上找到

  • session.save_path string

  • Defines a comma separated of hostname:port entries to use for session server pool, for example“sess1:11211, sess2:11211”.

  • 这段说明,于是去掉tcp://再试,才终于成功!

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/210494.html<

(0)
管理的头像管理
上一篇2025-04-09 23:14
下一篇 2025-04-09 23:15

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注