php - PECL/Memcache 和 PECL/Memcached

标签 php mysql memcached pecl

我在 PHP 设置中安装了两个 PECL,当我执行 php -V 时,我可以看到两者都在运行。在我的 /etc/php5/conf.d/ 文件夹中,这两个 PECL 均已启用。当我检查 phpinfo 时,我发现使用了 PECL/Memcache,因为它分配了端口号 11211。两种 PECL 在 .ini 文件中都有自己的配置,但只使用了一个。我知道我们不能同时使用两者,但我想一次测试两个 PECL。我的问题是如何在不删除任何人的情况下通过更改设置来测试这些 PECL。我想测试 Memcache 并禁用它并测试 Memcached,然后再决定使用什么。有什么方法可以在不删除的情况下完成它?

目前我正在使用PhpMemcachedAdmin检查一下 Memcached,它仍处于测试阶段且存在缺陷。如果有人可以向我推荐一些其他更好的工具,那么这将非常有帮助。

最佳答案

您可以同时激活两个扩展程序。 PECL MemcachePECL Memcached 都是连接到 Memcached 服务器的 PHP 客户端

关于优缺点

如前所述,Memcached 构建于 libmemcached 之上由 memcached 服务器团队维护。人们说这样更好,但我至今无法验证这一点。

PECL memcache 仍然具有更好的 PHP session 支持。

我找到了(有点旧,但大部分仍然有效)比较表 here

编辑

PHP 正在使用任一扩展来连接到 Memcached 服务器。 以下是一些使用示例

PHP 中的 PECL Memcached 使用示例

PECL Memcached class reference

// create PECL memcached Object
$m = new Memcached();

// add a server, connection is established lazily as far as I know
$m->addServer( 'localhost', 11211 );

// set values, those are written into your server's memory using the memcached server
$m->set( 'integer', 1 );
$m->set( 'intIncrement', 1 );
$m->set( 'intDecrement', 1 );
$m->set( 'string', 'I am a string' );
$m->set( 'array', array( 'a', 'b', 'c' ) );

// increment
$m->increment( 'intIncrement' );

// decrement
$m->decrement( 'intDecrement' );

// get values again
var_dump ( $m->get( 'integer' ) );
var_dump ( $m->get( 'intIncrement' ) );
var_dump ( $m->get( 'intDecrement' ) );
var_dump ( $m->get( 'string' ) );
var_dump ( $m->get( 'array' ) );

// delete values
$m->delete( 'integer' );
$m->delete( 'intIncrement' );
$m->delete( 'intDecrement' );
$m->delete( 'string' );
$m->delete( 'array' );

// close connection
$m->close();

PHP 中的 PECL Memcache 使用示例

PECL Memcache class reference

这可以在同一个 PHP 脚本中!

// create PECL memcache object
$m = new Memcache;

// connect to the memcached server
$m->connect('localhost', 11211);

// set values
$m->set( 'integer', 1 );
$m->set( 'intIncrement', 1 );
$m->set( 'intDecrement', 1 );
$m->set( 'string', 'I am a string' );
$m->set( 'array', array( 'a', 'b', 'c' ) );

// increment
$m->increment( 'intIncrement' );

// decrement
$m->decrement( 'intDecrement' );

// get values again
var_dump ( $m->get( 'integer' ) );
var_dump ( $m->get( 'intIncrement' ) );
var_dump ( $m->get( 'intDecrement' ) );
var_dump ( $m->get( 'string' ) );
var_dump ( $m->get( 'array' ) );

// delete values
$m->delete( 'integer' );
$m->delete( 'intIncrement' );
$m->delete( 'intDecrement' );
$m->delete( 'string' );
$m->delete( 'array' );

// close connection
$m->close();

您还可以将对象存储到memcached中,查看这篇关于object serialization的文章和 magic class methods PHP 中的 __sleep__wakeup()

正如您所看到的,PECL Memcached 和 Memcache 这两个客户端的基本用法非常相同。

关于php - PECL/Memcache 和 PECL/Memcached,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974818/

相关文章:

python - 为什么在这个 NDB put 操作的末尾有一个 memcache delete?

php - MYSQL 时间戳在插入时为空

php - 外部托管电子邮件并使用 PHP 发送电子邮件

php - 获取php DateInterval 共 'minutes'

PHP mysqli stmt 绑定(bind)结果未获取值

caching - nginx 使用 memcached 缓存来自远程服务器的响应

php - 如何在 PHP/MySQL 中获取和比较行值?

mysql - sql在最有效的地方自动加入?

javascript - 如何将 Url 变量与 php 变量匹配

PHP-Memcached : MySql resource caching