欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Memcached - PHP 装配&使用

程序员文章站 2022-05-01 16:01:43
...
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代码

? $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代码

//访问统计 ??

$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代码

$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代码

$memcache ?=? new ?Memcache;??

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

? $test =( str_repeat (’jetwong’,100000));?? $memcache ->set(’b’,( $test ));?

?>

? 使用压缩:??

? $memcache ?=? new ?Memcache;

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

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

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

?>??

内存的更新清理PHP代码

? $memcache ?=? new ?Memcache;?

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

? /*设置值*/

? $status ?=? $memcache ->getStats();??

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

echo ?’设置后’;?? for ( $i =0; $i $i ++)?{?? ????

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

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

}

? /*查看设置的值*/ ??

$status ?=? $memcache ->getStats();

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

echo ?’
开始
delete ’;??

for ( $i =0; $i $i ++)?{?? ??

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

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

}??

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

$status ?=? $memcache ->getStats();??

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

echo ?’使用 flush 情况:’;?

for ( $i =0; $i $i ++)?{?? ????

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

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

}??

$memcache -> flush ();?

echo ?’ flush 之后:’;?

for ( $i =0; $i $i ++)?{?????????? ??

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

}??

$status ?=? $memcache ->getStats();?

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

?>?

内存超量测试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 $i ++)?{?? ???

?? $j =’test’. $i ;?? ??

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

?? {?? ??????

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

?? ?????? $status ?=? $memcache ->getStats();

?? ??????? echo ?’内存:’. $status [’bytes’].’
’;

?? } else ?{

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

? ?? ? ??? }

? }?

?>

总结 PHP代码

? //设置篇

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

?? //显示我们的数据 ?? ???

}?? else ?{?

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

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

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

}

?>?

Memcached - PHP 装配&使用

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频