来自 美高梅4858mgm 2019-10-23 13:16 的文章
当前位置: 美高梅4858官方网站 > 美高梅4858mgm > 正文

PHP如何使用Memcached

六、PHP memcached 应用示范

首先 下载 memcached-client.php,在下载了 memcached-client.php 之后,就能够透过那几个文件中的类“memcached”对 memcached 服务进行操作了。其实代码调用非常轻巧,首要会用到的不二秘技有 add()、get()、replace() 和 delete(),方法求证如下跋山涉水的近义词

add ($key, $val, $exp = 0)

往 memcached 中写入对象,$key 是目的的独一无二标志符,$val 是写入的靶子数据,$exp 为过期时间,单位为秒,默以为不限时期;

get ($key)

从 memcached 中获得对象数据,通过对象的独一日千里标记符 $key 获取;

replace ($key, $value, $exp=0)

使用 $value 替换 memcached 中标记符为 $key 的对象内容,参数与 add() 方法龙行虎步致,独有 $key 对象存在的意况下才会起效果;

delete ($key, $time = 0)

剔除 memcached 中标志符为 $key 的靶子,$time 为可选参数,表示删除以前必要等待多长期。

下边是意气风发段轻巧的测量检验代码,代码中对标记符为 'mykey' 的靶子数据举办存取操作爬山涉水

<?php
//    包含 memcached 类文件
require_once('memcached-client.php');
//    选项设置
$options = array(
    'servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务
    'debug' => true,  //是否打开 debug
    'compress_threshold' => 10240,  //超过多少字节的数据时进行压缩
    'persistant' => false  //是否使用持久连接
    );
//    创建 memcached 对象实例
$mc = new memcached($options);
//    设置此脚本使用的唯一标识符
$key = 'mykey';
//    往 memcached 中写入对象
$mc->add($key, 'some random strings');
$val = $mc->get($key);
echo "n".str_pad('$mc->add() ', 60, '_')."n";
var_dump($val);
//    替换已写入的对象数据值
$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));
$val = $mc->get($key);
echo "n".str_pad('$mc->replace() ', 60, '_')."n";
var_dump($val);
//    删除 memcached 中的对象
$mc->delete($key);
$val = $mc->get($key);
echo "n".str_pad('$mc->delete() ', 60, '_')."n";
var_dump($val);
?>

是还是不是超级轻易,在实质上接收中,平日会把数据库查询的结果集保存到 memcached 中,后一次作客时一贯从 memcached 中获得,而不再做数据库查询操作,那样能够在超大程度上减轻数据库的承当。平时会将 SQL 语句 md5() 之后的值作为唯黄金时代标识符 key。上面是贰个行使 memcached 来缓存数据库查询结果集的事必躬亲(此代码片段紧接上边的以身作则代码)跋山涉水的近义词

<?php
$sql = 'SELECT * FROM users';
$key = md5($sql);   //memcached 对象标识符
if ( !($datas = $mc->get($key)) ) {
    //    在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。
    echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";
    $conn = mysql_connect('localhost', 'test', 'test');
    mysql_select_db('test');
    $result = mysql_query($sql);
      while ($row = mysql_fetch_object($result))
        $datas[] = $row;
    //    将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。
    $mc->add($key, $datas);
} else {
      echo "n".str_pad('Read datas from memcached.', 60, '_')."n";
}
var_dump($datas);
?>

能够看来,使用 memcached 之后,能够削减数据库连接、查询操作,数据库负载下来了,脚本的运作速度也提升了。

前边小编蒸蒸日上度写过风度翩翩篇名称叫《PHP 落成多服务器分享 SESSION 数据》文章,文中的 SESSION 是接受数据库保存的,在出现访谈量大的时候,服务器的负载会一点都不小,平时会压倒 MySQL 最罗安达接数,利用 memcached,我们能够很好地化解那个标题,职业规律如下爬山涉水

客户访谈网页时,查看 memcached 中是不是有日前顾客的 SESSION 数据,使用 session_id() 作为唯后生可畏标志符;假诺数量存在,则一贯回到,借使空头支票,再举办数据库连接,获取 SESSION 数据,并将此数据保存到 memcached 中,供下一次接纳; 当前的 PHP 运行截止(或使用了 session_write_close())时,会调用 My_Sess::write() 方法,将数据写入数据库,那样的话,每一次还是会有数据库操作,对于那几个情势,也亟需开展优化。使用贰个全局变量,记录客商步入页面时的 SESSION 数据,然后在 write() 方法内相比此数量与想要写入的 SESSION 数据是还是不是风流倜傥律,差别才开展数据库连接、写入数据库,相同的时候将 memcached 中对应的对象删除,若是肖似的话,则象征 SESSION 数据未改动,那么就足以不做别的操作,直接再次来到了; 那么客户 SESSION 过期时间怎么化解吗?记得 memcached 的 add() 方法有个过期时间参数 $exp 吗?把这一个参数值设置成小于 SESSION 最大存活时间就能够。其他别忘了给那个直接在线的顾客接二连三 SESSION 时间长度,这几个能够在 write() 方法中国化学工业进出口总公司解,通过决断时间,相符条件则更新数据库数据。

二、memcached 安装

一、memcached 简介

在不少场子,我们都会听到 memcached 那一个名字,但不菲同校只是听过,并不曾用过或实际了然过,只略知风流洒脱二它是一个很正确的东东。这里差十分的少介绍一下,memcached 是高速、神速的布满式内部存款和储蓄器对象缓存系统,首要用以加快 WEB 动态应用程序。

第生机勃勃种,PHP 有一个名称为 memcache 的扩大,Linux 下编写翻译时索要带上 –enable-memcache[=DIR] 选项,Window 下则在 php.ini 中去掉 php_memcache.dll 前面包车型客车注释符,使其可用。

四、memcached 的做事原理

首先 memcached 是以守护程序方法运营于叁个或八个服务器中,任何时候选拔客商端的总是操作,客商端能够由各类语言编写,近来已知的客商端 API 包含 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客商端在与 memcached 服务塑造连接之后,接下去的业务就是存取对象了,每一种被存取的靶子都有贰个唯风华正茂的标志符 key,存取操作均通过这一个 key 举行,保存到 memcached 中的对象实际是放置内部存储器中的,并非保存在 cache 文件中的,那也是干吗 memcached 能够那样迅疾火速的原由。注意,那些指标并不是贯彻始终的,服务甘休今后,里边的数码就能够放任。

一、memcached 简介

二、memcached 安装

先是是下载 memcached 了,这段日子新型版本是 1.1.12,直接从官方网站就能够下载到 memcached-1.1.12.tar.gz。除却,memcached 用到了 libevent,笔者下载的是 libevent-1.1a.tar.gz。

接下去是独家将 libevent-1.1a.tar.gz 和 memcached-1.1.12.tar.gz 解开包、编译、安装:

# tar -xzf libevent-1.1a.tar.gz # cd libevent-1.1a# ./configure --prefix=/usr# make# make install# cd .. # tar -xzf memcached-1.1.12.tar.gz# cd memcached-1.1.12 # ./configure --prefix=/usr# make# make install

设置到位之后,memcached 应该在 /usr/bin/memcached。

运作 memcached 守护程序超级粗略,只需二个命令行就可以,无需修正任何配置文件(也不曾安顿文件给您修正)爬山涉水
/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd
参数解释爬山涉水

五、PHP 怎样作为 memcached 顾客端

有二种艺术能够使 PHP 作为 memcached 客户端,调用 memcached 的劳务扩充对象存取操作。

首先种,PHP 有三个称呼 memcache 的强大,Linux 下编写翻译时索要带上 –enable-memcache[=DIR] 选项,Window 下则在 php.ini 中去掉 php_memcache.dll 前边的注释符,使其可用。

除了,还应该有生气勃勃种情势,能够避开扩张、重新编写翻译所带动的麻烦,那正是向来动用 php-memcached-client美高梅4858mgm,。

本文选择第三种方法,即便效用会比扩张库稍差点,但难点超小。

你可能感兴趣的小说:

  • PHP5.5在windows安装使用memcached服务端的点子
  • PHP模块memcached使用指南
  • PHP增加模块memcached长连接使用办法深入分析
  • PHP 使用memcached轻便示例分享

三、运营 memcached 守护程序

运营 memcached 守护程序十分不难,只需八个命令行就能够,无需改正任何配置文件(也从没配置文件给您改正)爬山涉水

/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd

参数解释跋山涉水的近义词

-d 以守护程序(daemon)情势运转 memcached;-m 设置 memcached 能够利用的内部存款和储蓄器大小,单位为 M; -l 设置监听的 IP 地址,要是是本机的话,常常能够不安装此参数;-p 设置监听的端口,默以为11211,所以也足以不设置此参数; -u 钦定客户,假使当前为 root 的话,供给使用此参数钦定顾客。

道理当然是那样的,还应该有任何参数能够用,man memcached 一下就能够见到了。

理所必然,还应该有任何参数能够用,man memcached 一下就能够观察了。

首先 下载 memcached-client.php,在下载了 memcached-client.php 之后,就足以透过那个文件中的类“memcached”对 memcached 服务拓宽操作了。其实代码调用非常轻易,紧要会用到的主意有 add()、get()、replace() 和 delete(),方法求证如下跋山涉水的近义词

往 memcached 中写入对象,$key 是指标的唯蒸蒸日上标志符,$val 是写入的指标数据,$exp 为过期时刻,单位为秒,默以为不限制期限间;

三、运维 memcached 守护程序

memcached是高质量的布满式内部存款和储蓄器缓存服务器。日常的应用指标是,通过缓存数据库查询结果,裁减数据库访谈次数,以加强动态Web应用的快慢、进步可扩充性。它能够回答任意七个接二连三,使用非阻塞的互连网IO。由于它的办事机制是在内部存款和储蓄器中开垦一块空间,然后创设叁个HashTable,Memcached自管理那几个HashTable。

有二种情势可以使 PHP 作为 memcached 顾客端,调用 memcached 的服务开展对象存取操作。

顾客访谈网页时,查看 memcached 中是不是有眼下客商的 SESSION 数据,使用 session_id() 作为唯意气风发标记符;若是数据存在,则直接再次来到,假设不设有,再拓宽数据库连接,获取 SESSION 数据,并将此数额保存到 memcached 中,供后一次利用; 当前的 PHP 运维结束(或选取了 session_write_close())时,会调用 My_Sess::write() 方法,将数据写入数据库,那样的话,每一回依旧会有数据库操作,对于这几个措施,也要求实行优化。使用三个全局变量,记录客户步入页面时的 SESSION 数据,然后在 write() 方法内相比较此数据与想要写入的 SESSION 数据是还是不是雷同,区别才开展数据库连接、写入数据库,同不日常候将 memcached 中对应的目的删除,假若风度翩翩致的话,则表示 SESSION 数据未变动,那么就可以不做别的操作,直接回到了; 那么客商 SESSION 过期时间怎么化解吧?记得 memcached 的 add() 方法有个过期时间参数 $exp 吗?把那个参数值设置成小于 SESSION 最大存活时间就能够。其余别忘了给那个直接在线的客户三回九转 SESSION 时间长度,这么些能够在 write() 方法中化解,通过判定时间,切合条件则更新数据库数据。

复制代码 代码如下:

get ($key)

六、PHP memcached 应用示范

四、memcached 的干活规律

上面是风姿浪漫段轻易的测验代码,代码中对标记符为 'mykey' 的对象数据开展存取操作跋山涉水的近义词

正文选择第二种办法,就算功效会比扩充库稍差了一些,但难题一点都不大。

delete ($key, $time = 0)

本文由美高梅4858官方网站发布于美高梅4858mgm,转载请注明出处:PHP如何使用Memcached

关键词: