时间:2021-07-01 10:21:17 帮助过:27人阅读
下载Memcached: 安装完毕重启服务: 安装完后可能会有如下提示: 修改php.ini 修改为: 添加一行:
http://danga.com/memcached/download.bml
安装:
下载安装libevent,已安装可跳过:
下载地址:http://www.monkey.org/~provos/libevent/
Memcached For PHP Module下载地址:
http://pecl.php.com/package/memcache
http://cn.php.com/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/
extension_dir = "./"
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"
extension=memcache.so
安装完毕,测试:
?
$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):
//访问统计 ??
$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 <9; $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
<9;
$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 <9; $i ++)?{?? ????
?? $memcache ->set(’b’. $i ,rand(1,99));?????? ????
?? echo
?’
’.
$i
.’->’.
$memcache
->get(’b’.
$i
);????
}??
$memcache
->
flush
();?
echo
?’
flush
之后:’;?
for ( $i =0; $i <9; $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
<=6;
$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();????//不成功,记录失败信息????
??
}
?>?