根据评论,不知道为什么上述方法不起作用,但有更好的方法来处理这个问题。
如果无法连接“myCacheServer.com”,则每次超时可能需要 30 秒。然后在超时之后,您将回退到本地主机 - 但如果您每次需要等待 30 秒,则运行 memcached 并没有多大意义。
我建议将服务器放在配置文件中,或者根据已知值进行驱动——比如
if (isset($_SERVER['HTTP_HOST']) && strpos($_SERVER['HTTP_HOST'], 'localhost') ) !== false) {
define('MEMCAHCED_SERVER', 'localhost');
define('MEMCAHCED_PORT', '11211');
} else {
// assume live - alwways have live as the fallback
define('MEMCAHCED_SERVER', 'myCacheHost.com');
define('MEMCAHCED_PORT', '11211');
}
$memcache=memcache_connect(MEMCAHCED_SERVER, MEMCAHCED_PORT);
// Set the status to true or false.
$this->connect=$memcache;
然后,为了满足您的需求(如果您希望远程服务器不可用),我会将这个事实存储在服务器上的文件中。它有点不正常,但会节省你的时间。
// Before calling memcache connect
if (file_exists(MyFlagFile) and filemtime(MyFlagFile) > time() - 600) {
// Do Not Use Memcached as it failed within hte last 5 minutes
} else {
// Try to use memcached again
if (!$memcache) {
// Write a file to the server with the time, stopping more tries for the next 5 minutes
file_put_contents(MyFlagFile, 'Failed again');
}
}