class MemcacheModel { private $mc = null; /** * サーバーの追加と memcahced オブジェクトの作成に使用されるコンストラクター メソッド */ function __construct(){ $ params = func_get_ar gs (); $mc = new Memcache; //memcache サーバーが複数ある場合 if( count($params) > 1){ foreach ($params as $v){ call_user_func_array(array ($mc, 'addServer'), $v); } //memcache サーバーが 1 つしかない場合 } else { call_user_func_array(array($mc, 'addServer'), $params[0]); } $this->gt ;mc=$mc; } /** * memcached オブジェクトを取得します * @return object memcached object */ function getMem(){ return $this->mc; } /** * mem が正常に接続されているかどうかを確認します * @return bool 接続が成功した場合は true を返し、そうでない場合は false を返します */ function mem_connect_error(){ $stats=$this->mc->getStats(); if(empty($stats)){ return false; }else{ return true; } }
プライベート関数 addKey($tabName , $key){ $keys=$this->mc->get($tabName); if(empty($keys)){ $keys=array(); } //キーが存在しない場合は、1 つ追加します if(!in_array($key, $keys)) { $keys[]=$key //このテーブルのキーに新しいキーを追加します $ this->mc-> ;set($tabName, $keys, MEMCACHE_COMPRESSED, 0); return true; //存在しない場合は true を返す }else{ return false; // 存在する場合は return true; false } } /** * memcache にデータを追加します * @param string $tabName キャッシュする必要があるデータテーブルの名前です * @param string $sql sql を memcache のキーとして使用します * @parammixed $data キャッシュする必要があるデータキャッシュされる */ function addCache($tabName, $sql, $data){ $key=md5($sql); //存在しない場合 if($ this->addKey($tabName, $key)){ $ this->mc->set($key, $data, MEMCACHE_COMPRESSED, 0); } } /** * memcahce に保存されているデータを取得します * @param string $sql SQL キーを使用します * @returnmixed キャッシュ内のデータを返します */ function getCache($sql){ $key=md5($sql ); return $this->mc->get($key); }
/** * 同じテーブルに関連するすべてのキャッシュを削除します * @param string $tabName データテーブルの名前 */ function delCache($tabName){ $keys=$this->mc ->get($tabName); //同じテーブルのすべてのキャッシュを削除します if(!empty($keys)){ foreach($キーとして $key){ $this->mc-> delete($key, 0); //0 はすぐに削除することを意味します } } //テーブルのすべての SQL キーを削除します $this-> mc->delete($tabName, 0); } / ** * 単一ステートメントのキャッシュを削除します * @param string $sql SQL ステートメントが実行されました */ function delone($sql){ $key=md5($sql); $this->mc-> ;delete($key, 0); //0 はすぐに削除することを意味します } }
|