您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
memcache学习-php操作memcached
发布时间:2017-02-12 13:04:36编辑:雪饮阅读()
如果你不能使用telnet是因为系统不存在telnet.exe,就可以到其它机器上拷贝
telnet.exe放在c:/windows/system32即可
vc可编写php可用的动态链接库文件扩展
准备工作:
(1)把php_memcache.dll拷贝到php的ext目录下
注意:不同版本的php要用对应不同的dll文件
如果php是5.2系列版本就要使用php_memcache的5.2.9.9
如果php是5.3的就要用php_memcache的2.2.5.0
如果php是5.3.13的就要用php_memcache的2.2.6.0
如果php是5.4的就要用php_memcache的5.4.7.0
(2)修改php.ini文件,加载php_memcache.dll(该文件就是封装了一堆函数)
和其它dll文件加载方法一致
(3)重新启动apache
wamp2.5安装memcached注意事项:
一定要注意你的wamp2.5是64位还是32位(根据此而下载不同的dll)
php.ini默认目录是C:\wamp\bin\apache\apache2.4.9\bin而不是C:\wamp\bin\php\php5.5.12
php操作memcached:
注意:php连接memcached函数的第三个参数(可选参数)即timeout(连接持续时间)默认值为1秒
修改此值之前请三思,过长的连接持续时间可能导致失去所有的缓存优势
<?php
//创建一个mem对象实例
$mem=new Memcache;
if(!$mem->connect("127.0.0.1",11211)){
die("连接失败!");
}
//增加
//增加一个字串于memcached中
/*
add函数的第三个参数:
是否启用压缩
MEMCACHE_COMPRESSED:启用压缩
*/
$mem->add("key1","北京",MEMCACHE_COMPRESSED,60);
//set函数和add函数使用一样,只需要将函数名改为set即可
//查询
$val=$mem->get("key1");
echo $val;
?>
所需文件下载:memcache.rar
在session存储对象或者memcached存储对象时要注意:
将对象取出的脚本中必需要有该对象的类的声明于当前脚本中,否则取出对象是不完整的
在低版本php中甚至取不出来。
memcache中若存储布尔值false就会以字符串""存储
php中8种值被认为布尔值false:
布尔值false自身
整数值0
浮点型值0.0
空字符串或字符串"0"
空数组
没有任何成员变量的对象
特殊类型null(包括尚未设定的变量)
从没有任何标记(tags)的xml文档中生成的simplexml对象
memcache中存储资源类型值会以int型的0存储,也就是说memcached是无法存储资源的。
serialize函数的作用:
1、如果想将对象或数组保存到文件中
2、如果想将对象或数组通过网络传输
对象直接file_put_contents会生成一个空文件。
php操作memcache:
<?php
//创建一个mem对象实例
$mem=new Memcache();
if(!$mem->connect("127.0.0.1",11211)){
die("连接失败!");
}
//增加
//增加一个字串于memcached中
/*
add函数的第三个参数:
是否启用压缩
MEMCACHE_COMPRESSED:启用压缩
*/
$mem->add("key1","北京",MEMCACHE_COMPRESSED,60);
//set函数和add函数使用一样,只需要将函数名改为set即可
//修改
$mem->replace("key1","xy",MEMCACHE_COMPRESSED,60);
//查询
$val=$mem->get("key1");
echo $val;
//删除
$mem->delete("key1");
$val=$mem->get("key1");
echo "删除了".$val;
?>
注意:
memcache的一些函数中所谓的失效时间若是设置为0则代表永不超时(只要memcached正常运行着)。
若为非0且非时间戳 ,则时间上限不能超过30天,若设置超过30天则数据就直接不向memcached存储
时间戳则不限制
源码级别操作memcached:
有时候我们没有权限去动php的配置文件,那么就需要源码级别操作memcache,dll动态链接库其实也就是包装了一个类。
由于该源码是2003年的源码比较老,所以有些notice,这些无所谓,关闭notice即可
<?php
require_once 'memcached-client.php';
$mc=new memcached(array(
'servers'=>array('127.0.0.1:11211'),//连接的memcached
'debug'=>false,//是否开启debug
'compress_threshold'=>10240,//最大压缩
'persistant'=>true//是否持久链接
));
$mc->add('key1',array('some','array'));
$val=$mc->get('key1');
var_dump($val);
?>
小技巧:list函数的使用
list函数可以接收explode分割字符串后的元素寄存,每个元素对应一个变量,如:
$host="127.0.0.1:1314";
list($ip,$port)=explode(":",$host);
echo $ip;
memcache源码(未编译)下载:memcached-client.rar
关键字词:php,操作,memcache