我运行了 Gabriel 上面的测试,但结果不同。我确实发现了对象之间的差异。例如
'val' => string(7) "4542.32"
'valD' => double(4542.32)
但是,我认为这可以解决。相当容易。
测试的主要问题是使用了一个端口。我在另一个端口上运行了另一个 memcached 实例,并稍微更改了代码。我使用了这段代码,并且取得了更好的效果
$servers = array(array('localserv', 11212));
$memcache = new Memcache;
$memcacheD = new Memcached;
$memcache->addServer('localserv', 11211);
$memcacheD->addServers($servers);
$memcacheD->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$checks = array(
123,
4542.32,
'a string',
true,
array(123, 'string'),
(object)array('key1' => 'value1'),
);
foreach ($checks as $i => $value) {
print "正在使用 Memcache 进行写入测试\n";
$key = 'cachetest' . $i;
$memcache->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if ($val !== $valD) {
print "不兼容!";
var_dump(compact('val', 'valD'));
} else {
print "兼容性测试通过\n";
}
print "正在使用 MemcacheD 进行写入测试\n";
$key = 'cachetest' . $i;
$memcacheD->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if ($val !== $valD) {
print "不兼容!";
var_dump(compact('val', 'valD'));
} else {
print "兼容性测试通过\n";
}
}