2.8. PHP 与 Memcached

未匹配的标注

如果你需要分布式缓存,请使用 Memcached 客户端类库。不然请使用 APCu

缓存系统通常可以提高应用程序的性能。Memcached 是一种流行的选择,它可以配合许多语言一起使用,包括PHP。

然而,当涉及到从 PHP 脚本访问 Memcached 服务器时,有两个命名非常愚蠢的不一样的客户端库可以选择:MemcacheMemcached。它们的名称几乎相同,都可用于访问 Memcached 实例。

事实证明,Memcached 库是最能实现 Memcached 协议的库。它包含了一些有用的特性是 Memcache 库所没有的,相对来说开发也最为活跃。

但是,如果你不需要从一系列分布式服务器访问 Memcached 实例,那么可以使用 APCu。APCu 得到 PHP 项目的支持,并且具有与 Memcached 几乎相同的功能。

安装 Memached 客户端库

安装 Memcached 服务后,需要安装 Memcached 客户端库。没有该库你的 PHP 脚本无法与 Memcached 服务器通信。
通过在终端上运行以下命令,可以在 Ubuntu 16.04 上安装 Memcached 客户端库:

sudo apt-get install php-memcached

改用 APCu

在 Ubuntu 14.04 之前,APC 项目既是操作码缓存,也是类似 Memcached 的键值存储。由于 Ubuntu 14.04 发布的 PHP 版本已经默认 内置操作码缓存 ,APC 被拆分出 APCu 项目,本质上是 APC 剔除操作码缓存部分,只保留键值存储功能(即“用户缓存”,这就是 APCu 中 “u” 代表的含义)。

安装 APCu

通过在终端上运行以下命令,可以在 Ubuntu 16.04 上安装 APCu:

sudo apt-get install php-apcu

范例

<?php
// 在 APCu 缓存中存储一些值。我们可以选择设置存活时间,但在本例中,这些值将永远存在,直到它们被 APCu 垃圾回收。
apcu_store('username-1532', '佛罗多·巴金斯');
apcu_store('username-958', '阿拉贡');
apcu_store('username-6389', '甘道夫');

// 你也可以缓存数组与对象
apcu_store('creatures', array('ent', 'dwarf', 'elf'));
apcu_store('saruman', new Wizard());

// 这些值在存储之后,任何 PHP 脚本都可以随时访问它们!
$value = apcu_fetch('username-958', $success);
if($success === true){
    print($value); // 阿拉贡
}

$value = apcu_fetch('creatures', $success);
if($success === true){
    print_r($value);
}

$value = apcu_fetch('username-1', $success); // 因为不存在这个键,$success 将被设置为布尔值 false。
if($success !== true){ // 注意这里用了全等比较 !==,会检查布尔值是否真正为 false ,而不是“假”值,如0或空字符串。
    print('Key not found');
}

apcu_delete('username-958'); // 这个键将会被删除

要点

  • 如果要从 16.04 之前的 APUc 版本迁移 APCu 代码,请注意函数名已从 apc_* 更改为 apcu_* 。例如,apc_store() 变成了 apcu_store() 。

延伸阅读

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/phpbestpractice...

译文地址:https://learnku.com/docs/phpbestpractice...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~