我遇到了类似的问题,对于那些不想(或由于某种原因不能)运行虚拟机的人,我最终得到了在 Windows 上运行与在 linux 上运行不同的代码。
当我运行以下内容时:
$m = new Memcache;
print_r(get_class_methods($m));
我注意到它Memcache
没有AddServers()
方法,这是为了Memcached
(请参阅Memcache 类上的php.net 文档与 Memcached 类上的 php.net 文档相比,并注意还有更多内容Memcached
!)。
因此,对于 Windows(您需要使用的地方Memcache
,没有Memcached
可用的),解决方案是创建自己的短循环来添加多个服务器:
$m = new Memcache();
$servers = array(
array('localhost', 11211),
// ... other servers here
);
foreach ($servers as $s) $m->addServer($s[0], $s[1]);
如果您需要同时提供适用于 Windows 和 Linux 的两组代码,您始终可以将上述内容包含在其中if (PHP_OS == 'WINNT')
,并将您的 Linux 代码放在后面的 else 语句中。所以,类似于:
$servers = array(
array('localhost', 11211),
// ... other servers here
);
if (PHP_OS == 'WINNT') {
$m = new Memcache();
foreach ($servers as $s) $m->addServer($s[0], $s[1]);
}
else {
$m = new Memcached();
$m->addServers($servers);
}