安装-php-memcached

一 安装libevent 1.去官网http://libevent.org/ 下载最新源码,我用的是libevent-2.0.20-stable.tar.gz 2.解压到/usr/src目录 ,执行命令:sudo tar -zxvf libevent-2.0.20-stable.tar.gz -C /usr/src 3.进入解压以后的目录,用sudo方式执行命令:sudo ./configure --prefix=/usr/local/libevent ; make ; make install 二 安装memcache 1.去官网 http://memcached.org/ 下最新源码,我用的是memcached-1.4.15.tar.gz 2.解压到/usr/src目录 ,执行命令:sudo tar -zxvf memcached-1.4.15.tar.gz -C /usr/src 3.进入解压以后的目录,用sudo方式执行命令:sudo ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent; make ; make install 三 安装php的memcache扩展 有两个版本一个是memcache(http://pecl.php.net/package/memcache ),另一个是基于libmemcached的memcached版本(http://pecl.php.net/package/memcached ); 网上查的资料是说前一个是原生的,后一个比前一个功能更强大。比较推荐使用基于libmemcahced 库的memcached扩展。支持memcache提供的CAS操作,稳定性和效率也更好。 这里我使用基于libmemcached 库的memcached扩展,安装步骤如下: 首先,安装libmemcached库 1.去网址 https://launchpad.net/libmemcached (或者http://libmemcached.org/libMemcached.html )下载源码, 我用的是libmemcached-1.0.14.tar.gz 2.解压缩到/usr/src目录,用sudo方式执行命令:sudo tar -zxvf libmemcached-1.0.14.tar.gz -C /usr/src 3.进入目录/usr/src/libmemcached-1.0.14/,sudo方式执行命令:./configure ;make;make install (不加--prefix=/usr/local/libmemcached 指定安装目录时,libmemcached 默认安装在/usr/local/,头文件安装在/usr/local/include/libmemcachde/,动态库默认安装在/usr/local/lib/下。) 4.make时遇到问题:sorry, unimplemented: Graphite loop optimizations can only be used if the libcloog-ppl0 package is installed。解决办法是修改Makefile,查找并去掉 floop-parallelize-all(应该有两处需要去掉),看了网上资料说是去掉后表示不使用Graphite loop 优化。 5.再次make,遇到问题:fatal error: sasl/sasl.h: No such file or directory. 在网上搜到的解决办法是: Depending on your operating system, you'll need to install the cyrus-sasl development package. That would be cyrus-sasl-devel on RedHat based distros and libsasl2-dev on Debian based distros IIRC. 我在ubuntu下直接用sudo apt-get install libsasl2-dev 安装了。 6.编译还是遇到问题,显示无法链接到sasl的一些文件。问题显示如下: undefined reference to `sasl_client_step' undefined reference to `sasl_dispose' undefined reference to `sasl_client_start' undefined reference to `sasl_client_new' 解决办法是重新执行configure命令,增加相应的参数。sudo执行命令:sudo ./configure --enable-sasl --without-memcached LDFLAGS=-Wl,--as-neede ;make; make install 7.终于安装libmemcached库成功了。。。 其次,安装memcached版本的php扩展 1. 去网址http://pecl.php.net/package/memcached 下载memcached版本,我用的是memcached-2.1.0.tgz 2. 解压到/usr/src目录 ,执行命令:sudo tar -zxvf memcached-2.1.0.tgz -C /usr/src 3. 进入解压以后的目录,是没有configure文件的,用sudo方式执行命令来生成:sudo /usr/local/php/bin/phpize 4.遇到问题:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. 网上搜到的解决办法为:
cd /usr/src
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
tar -zvxf m4-1.4.9.tar.gz
cd m4-1.4.9/
./configure && make && make install
cd ../
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
tar -zvxf autoconf-2.62.tar.gz
cd autoconf-2.62/
./configure && make && make install
5.这是再次执行sudo /usr/local/php/bin/phpize,就可以成功生成configure文件了。(phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,官方说明网址为:http://php.net/manual/en/install.pecl.phpize.php) 6.用sudo方式执行命令./configure --with-php-config=/usr/local/php/bin/php-config; make ; make install 7.编译完成了,还需要做的是在/usr/local/lib/php.ini文件中加入extension值:extension=memcache.so 8.重启/usr/local/php/sbin/php-fpm程序使配置生效,但是报错: ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2) ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf' ERROR: FPM initialization failed 解决办法为: (1)cd /usr/local/php/etc/; (2)mv php-fpm.conf.default php-fpm.conf 9.重启仍然出现问题:ERROR: [pool www] cannot get uid for user 'www'。解决办法为:编辑文件vim /usr/local/php/etc/php-fpm.conf, 把user = nobody group = nobody  中的nobody修改成有效的用户和用户组名称。 10.php扩展可使用的一些方法可参考网址:http://blog.csdn.net/fwkjdaghappy1/article/details/7592337 参考网址: http://www.dewen.org/q/844 http://hi.baidu.com/thinkinginlamp/item/5a3b2531e25dc6f62784f4fb http://code.google.com/p/memcached/wiki/PHPClientComparison https://bugs.launchpad.net/keystone/+bug/843080 http://www.cppblog.com/kefeng/archive/2010/10/11/129422.html https://bugs.launchpad.net/libmemcached/+bug/656010 http://blog.csdn.net/vaal_water/article/details/6439483 http://www.spiration.co.uk/post/1385/Cannot-find-autoconf.-Please-check-your-autoconf-installation https://gist.github.com/3359828 http://www.2cto.com/kf/201111/110140.html http://blog.johntechinfo.com/technology/264 http://www.oschina.net/question/231397_36921 http://www.cnblogs.com/huangjingzhou/articles/2093706.html http://blog.csdn.net/fwkjdaghappy1/article/details/7592337 转自 http://www.cnblogs.com/alexqdh/archive/2012/11/20/2778208.html

memcached常见命令

1、启动Memcache 常用参数 -p <num>      设置端口号(默认不设置为: 11211) -U <num>      UDP监听端口(默认: 11211, 0 时关闭) -l <ip_addr>  绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -d            独立进程运行 -u <username> 绑定使用指定用于运行进程<username> -m <num>      允许最大内存用量,单位M (默认: 64 MB) -P <file>     将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用 如: 在linux下:./usr/local/bin/memcached -d -u jb-mc -l 192.168.1.197 -m 2048 -p 12121 在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500 在windows下注册为服务后运行: sc.exe create jb-Memcached binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500″start= auto net start jb-Memcached 2、连接:telnet 127.0.0.1 11211 3、您将使用五种基本memcached 命令执行最简单的操作。这些命令和操作包括: set: 用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。 add :仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应NOT_STORED 。 replace:仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从memcached 服务器接受到一条NOT_STORED 响应。 get:用于检索与之前添加的键值对相关的值。 delete:用于删除memcached 中的任何现有值。您将使用一个键调用delete ,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条NOT_FOUND 消息。 gets:功能类似于基本的get 命令。两个命令之间的差异在于,gets 返回的信息稍微多一些:64 位的整型值非常像名称/值对的 “版本” 标识符。 前三个命令是用于操作存储在memcached 中的键值对的标准修改命令。它们都非常简单易用,且都使用清单5 所示的语法: command <key> <flags> <expiration time> <bytes> <value> 表1. memcached 修改命令参数 参数       用法 key  key 用于查找缓存值 flags       可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 expiration time       在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) bytes       在缓存中存储的字节点 value       存储的值(始终位于第二行) 例子: set useID 0 0 5 1234 4、缓存管理命令 最后两个memcached 命令用于监控和清理memcached 实例。它们是stats 和flush_all 命令。 stats :转储所连接的memcached 实例的当前统计数据。 flush_all:用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则flush_all 能提供很大的用处。 查看memcached状态的基本命令,通过这个命令可以看到如下信息: STAT pid 22459                             进程ID STAT uptime 1027046                        服务器运行秒数 STAT time 1273043062                       服务器当前unix时间戳 STAT version 1.4.4                         服务器版本 STAT pointer_size 64                       操作系统字大小(这台服务器是64位的) STAT rusage_user 0.040000                  进程累计用户时间 STAT rusage_system 0.260000                进程累计系统时间 STAT curr_connections 10                   当前打开连接数 STAT total_connections 82                  曾打开的连接总数 STAT connection_structures 13              服务器分配的连接结构数 STAT cmd_get 54                            执行get命令总数 STAT cmd_set 34                            执行set命令总数 STAT cmd_flush 3                           指向flush_all命令总数 STAT get_hits 9                            get命中次数 STAT get_misses 45                         get未命中次数 STAT delete_misses 5                       delete未命中次数 STAT delete_hits 1                         delete命中次数 STAT incr_misses 0                         incr未命中次数 STAT incr_hits 0                           incr命中次数 STAT decr_misses 0                         decr未命中次数 STAT decr_hits 0                           decr命中次数 STAT cas_misses 0    cas未命中次数 STAT cas_hits 0                            cas命中次数 STAT cas_badval 0                          使用擦拭次数 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 15785                      读取字节总数 STAT bytes_written 15222                   写入字节总数 STAT limit_maxbytes 1048576                分配的内存数(字节) STAT accepting_conns 1                     目前接受的链接数 STAT listen_disabled_num 0 STAT threads 4                             线程数 STAT conn_yields 0 STAT bytes 0                               存储item字节数 STAT curr_items 0                          item个数 STAT total_items 34                        item总数 STAT evictions 0                           为获取空间删除item的总数

在Linux上安装Memcached服务

下载并安装Memcache服务器端 服务器端主要是安装memcache服务器端. 下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz 另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装) 官网:http://www.monkey.org/~provos/libevent/ 下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz 用wget指令直接下载这两个东西.下载回源文件后。 1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install; 2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install; 这样就完成了Linux下Memcache服务器端的安装。详细的方法如下: 1.分别把memcached和libevent下载回来,放到 /tmp 目录下: # cd /tmp # wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz # wget http://www.monkey.org/~provos/libevent-1.2.tar.gz 2.先安装libevent: # tar zxvf libevent-1.2.tar.gz # cd libevent-1.2 # ./configure –prefix=/usr # make # make install 3.测试libevent是否安装成功: # ls -al /usr/lib | grep libevent lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3 -rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3 -rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a -rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3 还不错,都安装上了。 4.安装memcached,同时需要安装中指定libevent的安装位置: # cd /tmp # tar zxvf memcached-1.2.0.tar.gz # cd memcached-1.2.0 # ./configure –with-libevent=/usr # make # make install 如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。 安装完成后会把memcached放到 /usr/local/bin/memcached , 5.测试是否成功安装memcached: # ls -al /usr/local/bin/mem* -rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached -rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug 启动Memcached服务: 1.启动Memcache的服务器端: # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid -d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户,我这里是root, -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200, -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口, -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定, -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid, 2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。 测试Memcached:
复制代码
[root@localhost /]# telnet 192.168.141.64 12000 Trying 192.168.141.64... Connected to 192.168.141.64 (192.168.141.64). Escape character is '^]'. set key1 0 60 4 zhou STORED get key1 VALUE key1 0 4 zhou END
复制代码
至此Memcached安装成功! 常见问题: 1.如果启动Memcached服务的时候遇到了 /usr/local/bin/memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory; 解决方案:
[root@localhost bin]# LD_DEBUG=libs memcached -v [root@localhost bin]# ln -s /usr/lib/libevent-1.2.so.1 /usr/lib64/libevent-1.2.so.1 [root@localhost bin]# /usr/local/bin/memcached -d -m 100 -u root -p 12000 -c 1000 -P /tmp/memcached.pid [root@localhost bin]# ps -aux
可以看到启动的Memcached服务了. 2.把Memcached服务加载到Linux的启动项中.万一机器断电系统重启.那么Memcached就会自动启动了. 假如启动Memcache的服务器端的命令为: # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid容来自17jquery 想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行,下面命令 /usr/local/memcached/bin/memcached -d -m 10 -p 12000 -u apache -c 256 上面有些东西可以参考一下:即,ip不指定时,默认是本机,用户:最好选择是:apache 或 deamon 这样,也就是属于哪个用户的服务,由哪个用户启动。 原文 http://www.cnblogs.com/zgx/archive/2011/08/10/2134097.html