如果 memcached 正常運作,呼叫 memcache_connect() 會回傳一個物件實例,而不是布林值。如果 memcached 沒有運作,呼叫 memcache_connect() 會拋出一個通知和一個警告(並且如預期般回傳 false)。
<?php
// memcache 正在運行
$test1 = memcache_connect('127.0.0.1',11211);
echo gettype($test1);
// object
echo get_class($test1);
// Memcache
// memcached 已停止
$test2 = memcache_connect('127.0.0.1',11211);
/*
Notice: memcache_connect(): Server 127.0.0.1 (tcp 11211) failed with: 連線嘗試失敗,因為連線方在一段時間後沒有正確回應,或是建立的連線失敗,因為連線的主機沒有回應。
(10060) in C:\Program Files\Support Tools\- on line 1
Warning: memcache_connect(): 無法連線到 127.0.0.1:11211,連線嘗試失敗,因為連線方在一段時間後沒有正確回應,或是建立的連線失敗,因為連線的主機沒有回應。
(10060) in C:\Program Files\Support Tools\- on line 1
*/
echo gettype($test2);
// boolean
echo $test2===false;
// 1
?>
似乎沒有辦法在不抑制錯誤的情況下檢查 memcached 是否真的正在運行。
<?php
$test3 = @memcache_connect('127.0.0.1',11211);
if( $test3===false ){
// memcached _可能_ 沒有運行
}
?>