コメントによると、上記が機能しない理由はわかりませんが、これを処理するためのはるかに優れた方法があります。
「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');
}
}