我有一個類似的問題,對於那些不想(或不能,無論什麼原因)運行虛擬機,我最終有不同的代碼在Windows上運行與Linux上運行。
當我跑了以下內容:
$m = new Memcache;
print_r(get_class_methods($m));
我注意到Memcache
不具有AddServers()
方法,這東西對於Memcached
(見php.net docs on Memcache class相比php.net docs on Memcached class,並注意有一個很多更多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);
}
似乎memcached在Windows中尚不可用。我正在使用虛擬框與Linux。我的建議是使用虛擬盒子或Linux本身來處理memcached。 –