windows下:
很多phper不知道如何在Windows下搭建Memcache的开发调试环境,最近个人也在研究Memcache,记录下自己安装搭建的过程。
其实我开始研究Memcache的时候并不知道居然还有memcached for Win32这个鸟东西,害得我在CnetOS下折腾1天才搞定,今天突然发现Windows下的Memcache进行开发调试完全没有问题,所以写篇Memcache的文档分享给大家。
Windows下的Memcache安装:
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
memcached的基本设置:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
<?php
$mem = new Memcache;
$mem->connect(”127.0.0.1″, 11211);
$mem->set(’key’, ‘This is a test!’, 0, 60);
$val = $mem->get(’key’);
echo $val;
?>
参考资料:
对Memcached有疑问的朋友可以参考下列文章:
Linux下的Memcache安装:http://www.ccvita.com/257.html
Windows下的Memcache安装:http://www.ccvita.com/258.html
Memcache基础教程:http://www.ccvita.com/259.html
Discuz!的Memcache缓存实现:http://www.ccvita.com/261.html
Memcache协议中文版:http://www.ccvita.com/306.html
linux下:
很早就想接触下memcacheD一时间也没有机会。
在这里澄清一下,为什么我的文章的标题memcache,而我的上面说的却是memcached?
memcached是一款软件,可以将你的程序或图片以hash的格式存储在服务器内存中。
好了废话少说,下面说的memcache是PHP的一个扩展,你可以到PHP官方去下载地址:http://pecl.php.net/package/memcache
好了,说下安装步骤:
首先得先安装libevent,因为memcached是依赖这个的。
我下载的版本是:
libevent-1.3a.tar.gz
$tar -zvxf libevent-1.3.a.tar.gz
然后进入cd libevent-1.3
$./configure --prefix=/usr/local/libevent //这里我习惯性的会把服务器相关的扩展或软件安装到$/usr/local
$make
$make install
然后安装memcached我用的是memcached-1.2.5.tar.gz版本
这样也很简单,同理:
$tar -zvxf memcached-1.2.5.tar.gz
$./configure --prefix=/usr/local/memcached
$make
$make install
然后运行:
$/usr/local/memcached/bin/memcached –d –m 500 -l 64.128.191.151 -p 11211 -u root
注释:
-u 以什么帐户启动
-m memcached共享的内存大小(以M为单位)
-l memcached服务的主机IP(一般是本机的IP,此项省略就是所有本机的IP)
-p memcached服务监听的端口(这个可以自己指定,只要不冲突就行,默认是11211)
下面安装PHP的memcache扩展
依然但是tar -zvxf memcache,我的版本是3.0以上,为什么选择这个,因为我的PHP版本是最新的2.5.6
而memcache最新的是3.0以上,考虑对应关系。
解压后进入cd memcache
然后运行:
$/usr/local/php/bin/phpize 回车
然后运行
$./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
$make
$make install
安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060922/
把这个记住,然后修改php.ini,把
extension_dir = "./"
修改为
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060922/"
并添加一行
extension=memcache.so
好啦,我们测试一下,对了别忘记重新启动下APACHE哦,我安装N次后的经验。
<?php
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
?>
输出test,OK啦,成功安装。
-------------------------------------------------------------------------
其实因为版本不同,以上安装过程还有个头疼的小插曲。
我一开始安装的memcache,是1.5,然后PHPINFO没有看到相关信息。
后来又换了memcache2.0以上版本。
还是不行,头疼,后来实在没办法了,考虑到了静态编译PHP,就是自己重新整理configure,重编译PHP。
把memcache扩展直接插到php源码中,这次我考虑到了版本问题,直接安装的是memcache3.0
相关版本。
首先解压
$tar -zvxf memcache
$cp memcache /soft/phpsrcdir/ext
$ rm configure
$ ./buildconf --force
$ ./configure --help
$ ./configure ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with- mysql=/usr/local/mysql --enable-memcache --enable-mbstring --zlib
$ make
$ make install
phpinfo();一下,出现了memcache相关信息,终于好了,呵呵
注意:本地测试,可能会报错。类似于:
Notice: Memcache::connect() [function.Memcache-connect]: Server localhost (tcp 11211) failed with: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 (10060) in ***/test.php on line 4
Warning: Memcache::connect() [function.Memcache-connect]: Can't connect to localhost:11211, 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 (10060) in ***/test.php on line 4
Could not connect
解决办法:
把localhost换成127.0.0.1