张颢镡 发表于 2015-9-1 09:47:06

use memcached and php-memcache(d)

  For memcached 1.2 to 1.3, protocolchanged for delete(). For memcached 1.4, the wrong format will cause fatal error:
failed with: CLIENT_ERROR bad command line format.
So php pecl-memcache will get failed with the new version.
  for php pecl-memcached, because it’s using libmemcache, so no this issue.
We write a function to choose which memcache extension we will use in our code:
  


$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);
}
}




页: [1]
查看完整版本: use memcached and php-memcache(d)