memcached 1.2 から 1.3 では、delete() のプロトコルが変更されました。 memcached 1.4 の場合、間違った形式は致命的なエラーを引き起こします:
失敗しました: CLIENT_ERROR bad command line format.
したがって、php pecl-memcache は新しいバージョンでは失敗します。
php pecl-memcached の場合、libmemcache を使用しているため、この問題はありません。
コードで使用する memcache 拡張機能を選択する関数を作成します。
$mem_flag = 0;$mem_conn = null;function mcached_conn(){ global $config, $mem_flag, $mem_conn; if($mem_flag != 1) { if ($config['mcache']['version']==0){ $mem_conn = memcache_pconnect($config['mcache']['host'], 11211); } else { $mem_conn = new Memcached(); $mem_conn->addServer($config['mcache']['host'], 11211); } $mem_flag = 1; } return $mem_conn;}function memcache_version_set($memcache_obj, $key,$value,$flag,$ttl){ global $config; if ($config['mcache']['version']==0){ return memcache_set($memcache_obj, $key,$value,$flag,$ttl); } else { return $memcache_obj->set($key,$value,$ttl); }} function memcache_version_get($memcache_obj, $key){ global $config; if ($config['mcache']['version']==0){ return memcache_get($memcache_obj, $key); } else { return $memcache_obj->get($key); }}function memcache_version_del($memcache_obj, $key){ global $config; if ($config['mcache']['version']==0){ return memcache_delete($memcache_obj, $key); } else { return $memcache_obj->delete($key); }}?