PHP Conference Japan 2024

Memcache

添加注释

用户贡献的注释 4 条注释

rob4226 at yahoo dot com
3 年前
感谢 GitHub 上的 nono303,我们可以在 Windows 上运行此 PHP 扩展和 memcached!这对开发环境来说非常棒,可以与生产 unix 服务器相匹配。我正在 Windows 10 机器上使用 PHP 8.0 和此 memcache 扩展,并且 memcached 服务器在本地主机上运行,效果很好。

我无法发布链接,但此扩展的 dll 位于存储库中:nono303/PHP-memcache-dll

而用于 Windows 的实际 memcached 服务器位于存储库中:nono303/memcached
gabriel dot maybrun at demandmedia dot com
10 年前
注意:最近我被分配了从 PECL memcache 迁移到 PECL memcached 的任务,并遇到了一个主要问题——memcache 和 memcached 以不同的方式序列化数据,这意味着用一个库写入的数据不一定能被另一个库读取。

例如,如果您使用 memcache 写入对象或数组,则 memcached 会将其解释为整数。如果您使用 memcached 写入它,则 memcache 会将其解释为字符串。

简而言之 - 您无法在 memcache 和 memcached 之间安全地切换,除非进行缓存刷新或使用隔离的缓存环境。

<?php
$memcache
= new Memcache;
$memcacheD = new Memcached;
$memcache->addServer($host);
$memcacheD->addServers($servers);

$checks = array(
123,
4542.32,
'a string',
true,
array(
123, 'string'),
(object)array(
'key1' => 'value1'),
);
foreach (
$checks as $i => $value) {
print
"Checking WRITE with Memcache\n";
$key = 'cachetest' . $i;
$memcache->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if (
$val !== $valD) {
print
"Not compatible!";
var_dump(compact('val', 'valD'));
}

print
"Checking WRITE with MemcacheD\n";
$key = 'cachetest' . $i;
$memcacheD->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if (
$val !== $valD) {
print
"Not compatible!";
var_dump(compact('val', 'valD'));
}
}
xrobau at gmail dot com
7 年前
请注意,Memcache 3.0.8 模块不适用于 PHP 7(或更高版本)。

有一个关于此的未解决的错误 - 请参阅 https://bugs.php.net/bug.php?id=72887,在撰写本文时已有一年多的时间了 - 但是,此模块的开发似乎已被放弃,并且 MemcacheD 模块现在是通过 PHP 访问 Memcache 的唯一方法。

如果您正在编写新的工具,并且想要使用 Memcache,请使用 MemcacheD 库。如果您正在尝试修复旧工具,则必须坚持使用 PHP 5.6,或者花费时间将您的代码重写为使用 MemcacheD。
Lajos Veres
6 年前
3.0.8 实际上与 PHP 7 不兼容,但此分支似乎可以工作
https://github.com/websupport-sk/pecl-memcache

对于新项目,memcacheD 听起来更安全,但此分支可能有助于保持一些旧项目的存活。

Debian 包管理器选择了此版本: https://github.com/websupport-sk/pecl-memcache/commit/4991c2fff22d00dc81014cc92d2da7077ef4bc86

基于此
http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/p/php-memcache/ https://packages.debian.org/sid/php/php-memcache
To Top