您的位置:首页 > 数据库 > Memcache

php整合memcached

2016-01-21 15:18 483 查看
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。

好了,这篇博客到此为止。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: