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

Memcached - PHP 安装&使用

2012-01-26 05:16 507 查看

Memcached - PHP 安装&使用

下载Memcached:
http://danga.com/memcached/download.bml
安装:

下载安装libevent,已安装可跳过:

下载地址:http://www.monkey.org/~provos/libevent/

Memcached For PHP Module下载地址:
http://pecl.php.net/package/memcache http://cn.php.net/manual/zh/ref.memcache.php
安装Memcached服务端
root@tonyvicky:#
tar vxzf memcached-1.1.12.tar.gz

root@tonyvicky:# cd memcached-1.1.12

root@tonyvicky:# ./configure --prefix=/usr/local/memcached

root@tonyvicky:# make

root@tonyvicky:# make install
安装完毕重启服务:
root@tonyvicky:#
cd /usr/local/memcached/bin

root@tonyvicky:# ./memcached -d -m 50 -p 11211 -u root
安装PHP模块
root@tonyvicky:#
tar vxzf memcache-1.5.tgz

root@tonyvicky:# cd memcache-1.5

root@tonyvicky:# /usr/local/php/bin/phpize

root@tonyvicky:# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir

root@tonyvicky:# make

root@tonyvicky:# make install
安装完后可能会有如下提示:
Installing
shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/
修改php.ini
extension_dir
= "./"
修改为:
extension_dir
= "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"
添加一行:
extension=memcache.so
安装完毕,测试:

PHP代码

<?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;  

Memcache的内定Function

connect(ip, port)

set(key, value)  数据压缩:set(key, value, MEMCACHE_COMPRESSED)

get(key)
increment,
同set(好像多了个计数功能,没试过)

getStats() 返回当前内存占用情况(return array) print_r($memcached->getStats());

flush  清空内存占用.

代码范例(来自chinaunix):

PHP代码

<?php  

//访问统计  

$memcache = new Memcache;  

$memcache->connect(’localhost’, 11211) or die ("Could not connect");  

if($s=$memcache->get(’a’)) {  

    $s=$s+1;  

    $memcache->set(’a’,$s);  

}  

else  

$memcache->set(’a’,1);  

echo ’访问结果为:’.$s;  

?>  

等效

PHP代码

<?php  

$memcache = new Memcache;  

$memcache->connect(’localhost’, 11211) or die ("Could not connect");  

  

if($s=$memcache->increment(’a’,1)) {  

    echo $s;      

}  

else  

$memcache->set(’a’,1);  

?>  

数据压缩

PHP代码

<?php  

$memcache = new Memcache;  

$memcache->connect(’localhost’, 11211) or die ("Could not connect");  

$test=(str_repeat(’jetwong’,100000));  

$memcache->set(’b’,($test));  

?>  

使用压缩:  

<?php  

$memcache = new Memcache;  

$memcache->connect(’localhost’, 11211) or die ("Could not connect");  

$test=(str_repeat(’jetwong’,100000));  

$memcache->set(’b’,($test),MEMCACHE_COMPRESSED);  

?>  

内存的更新清理

PHP代码

<?php  

$memcache = new Memcache;  

$memcache->connect(’localhost’, 11211) or die ("Could not connect");  

  

/*设置值*/  

$status = $memcache->getStats();  

echo ’设置前内存使用情况’.$status[’bytes’].’<br>’;  

echo ’设置后’;  

for($i=0;$i<9;$i++) {  

    $memcache->set(’b’.$i,rand(1,99));      

    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);         

}  

  

/*查看设置的值*/  

$status = $memcache->getStats();  

echo ’delete前内存使用情况’.$status[’bytes’].’<br>’;  

echo ’<br>开始delete’;  

for($i=0;$i<9;$i++) {  

    $memcache->delete(’b’.$i);      

    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);  

}  

  

/*查看flush使用的情况*/  

$status = $memcache->getStats();  

echo ’使用flush前内存使用情况’.$status[’bytes’].’<br>’;  

echo ’使用flush情况:’;  

for($i=0;$i<9;$i++) {  

    $memcache->set(’b’.$i,rand(1,99));      

    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);    

}  

$memcache->flush();  

echo ’flush之后:’;  

for($i=0;$i<9;$i++) {          

    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);  

}  

$status = $memcache->getStats();  

echo ’flush后内存使用情况’.$status[’bytes’].’<br>’;  

?>  

内存超量测试

PHP代码

<?php  

$memcache = new Memcache;  

$memcache->connect(’localhost’, 11211) or die ("Could not connect");  

  

//600K左右  

$test1= str_repeat(’jetlee’,100000);  

//600K左右  

$test2= str_repeat(’jetlee’,100000);  

//600K左右  

$test3= str_repeat(’李连杰’,200000);  

//600K左右  

$test4= str_repeat(’连杰李’,100000);  

//200K  

$test5= file_get_contents(’http://img.pconline.com.cn/images/photoblog/2988177/20068/4/1154688770042_mthumb.JPG’);  

$test6= file_get_contents(’http://img.pconline.com.cn/images/photoblog/1767557/20069/28/1159417108902_mthumb.jpg’);  

  

for($i=1;$i<=6;$i++) {  

    $j=’test’.$i;  

    if($memcache->set($j,$$j)) {  

        echo $j.’->设置成功<br>’;  

        $status = $memcache->getStats();  

        echo ’内存:’.$status[’bytes’].’<br>’;  

    }  

    else {  

        echo $j.’->设置失败<br>’;  

    }  

}  

?>  

总结

PHP代码

<?  

//设置篇  

if($data = $memcache->get(’k’,$v)) {  

    //显示我们的数据  

    }  

else {  

    $data = get_from_database; //得到数据源  

    if(!$memcache->set(’k’,$data), MEMCACHE_COMPRESSED) //开始设置  

    log();    //不成功,记录失败信息      

}  

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