我在 PHP 设置中安装了两个 PECL,当我执行 php -V
时,我可以看到两者都在运行。在我的 /etc/php5/conf.d/
文件夹中,这两个 PECL 均已启用。当我检查 phpinfo
时,我发现使用了 PECL/Memcache
,因为它分配了端口号 11211
。两种 PECL 在 .ini
文件中都有自己的配置,但只使用了一个。我知道我们不能同时使用两者,但我想一次测试两个 PECL。我的问题是如何在不删除任何人的情况下通过更改设置来测试这些 PECL。我想测试 Memcache 并禁用它并测试 Memcached,然后再决定使用什么。有什么方法可以在不删除的情况下完成它?
目前我正在使用PhpMemcachedAdmin检查一下 Memcached,它仍处于测试阶段且存在缺陷。如果有人可以向我推荐一些其他更好的工具,那么这将非常有帮助。
最佳答案
您可以同时激活两个扩展程序。 PECL Memcache
和 PECL 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 使用示例
这可以在同一个 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/