php整合memcached
1、xcache和memcached都是缓存的加速的,但是这两个有什么不同的呢,其实两个没有什么关系,PHP动态页面的执行过程是首先回编译出一个执行码(opcode),每次相同的请求都会重新的编译这个opcode,如果我们把他缓存下下来,那么就会提高相应的效率。xcache就是实现了opcode的共享。但是memcached不同的是他缓存的是从数据库里面请求的数据。但是memcached不会决定去缓存什么数据,这些数据时由客户端和服务器端共同决定的。
2、memcached作为一个缓存服务器,主要是缓存服务器那么出现碎片是肯定的,在解决这个问题上,memcached的机制是slab allactor,memcached会准备好许多小的空间,比如20byte的,等等然后也会提前决定生成多少个。其中分成的类别叫做slab class,其中用来存数据的叫做slab chunk。另外一个就是增长因子,在划分slab class的时候,会规定开始的大小是,增长因子是多少,下一个的大小就是上一个slab class*增长因子。
3、开始memcached的安装
memcached的安装时依赖与libevent的,在安装memcached之前记住解决相应的依赖
tarlibevent.**.tar.gz
cd libevent
./configure–prefix=/usr/local/libevent
make &&make install
tarmemcached.1.4.25.tar.gz(http://www.memcached.org)
./configure –prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make &&make install
memcached已将安装完成,下面可以启动了,我们可以自己为memcached提供启动的脚本。下面有几个参数需要注意下
-d:memcached是以服务的形式运行的。
-c:并发的连接数
-n:最开始的chunk的大小
-m:要分配的内存的大小
-p:监听的TCP的端口号,默认的是TCP的11211端口
-U:箭筒的UDP的端口号,默认的是udp的11211端口
-f:增长因子的大小
下面是memcached的启动的脚本:
!/bin/bash
#chkconfig: 2345 88 12
#script formemcached
. /etc/init.d/functions
[ -f /etc/sysconfig/memcached ] && ./etc/sysconfig/memcached
Maxconn=1024
Mem=64
Tport=11211
Uport=11211
User=nobody
Factor=1.1
prog=/usr/local/memcached/bin/memcached
lockfile=${lockfile-/var/lock/subsys/memcached}
pidfile=${pidfile-/var/run/memcached.pid}
start() {
echo "Starting memcached"
daemon $prog -d -c $Maxconn -m $Mem -p $Tport -U $Uport -u$User -f $Factor
RETVAL=$?
[ $RETVAL -eq 0 ] && touch$pidfile $lockfile
echo
return $RETVAL
}
stop() {
echo "Stopping memcached"
killproc $prog
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -rf$pidfile $lockfile
echo
return $RETVAl
}
reload() {
echo "Reloading memcached"
killproc $prog -HUP
RETVAL=$?
echo
return $RETVAL
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
status)
status $prog
;;
*)
echo "Usageservice memcached{start|stop|restart|reload|status}"
;;
esac
虽然脚本比较简陋但是还是可以用的。
下面就可以启动memcached了。
chmod +x/etc/init.d/memcached
chkconfig –addmemcached
chkconfig memcached on
service memcachedstart
启动之后
netstat –nltup|grep memcached //发现11211端口以及被监听了。
4、下面开始介绍安装PHP的扩展memcache
现在地址为http://pecl.php.net/package/memcache
tar –zxvf memcache.**.tar.gz
cd memcache
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
--with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
make &&make install
在PHP的配置文件中添加memcached的扩展
vim/etc/php.d/memcache.so
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so
重启PHP
service php-fpmrestart
利用页面进行测试
vim test.php
<?php
$mem = newmemcache;
$mem->connect("192.168.5.1",11211) or die("Could notconnect");
$version =$mem->getVersion();
echo"Server's version: ".$version."<br/>\n";
$mem->set('testkey','Hello World', 0, 600) or die("Failed to save data at the memcachedserver");
echo "Storedata in the cache (data will expire in 600 seconds)<br/>\n";
$get_result =$mem->get('testkey');
echo"$get_result is from memcached server.";
?>
如果在web界面能够显示helloworld是来自于memcached就成功了。另外可以安装memadmin-master对memcached进行web的管理。只需要解压之后,将整个文件夹移动到web的根目录下进行访问就行了。在登录的时候,默认的用户名和密码都是admin。
好了,这篇博客到此为止。