在设计一个wordpress插件时,需要用到非wordpress数据库表中的内容,直接访问数据库表是最快的方法,但感觉耦合度太高,因此决定采用访问RESTful service的方法来远程调用数据,这时候带来的另一个问题是每次都要通过http请求访问远端,对性能会有影响,最后想到了何不把远程取来的数据存放在memcache里,这样就极大地节省了http请求的时间。
代码如下:
function getVarValue($var_name, $url) {
//连接到memcache
$memcache_obj = memcache_connect('localhost', 11211);
$obj_memcache = memcache_get($memcache_obj, $var_name);
if ($obj_memcache) {
//在memcache中找到了变量,则直接取用
$object = unserialize($obj_memcache);
} else {
//获取变量内容
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$str = curl_exec($curl);
curl_close($curl);
$object = json_decode($str);
//将变量内容存入memcache
memcache_set($memcache_obj, $var_name, serialize($object), MEMCACHE_COMPRESSED);
}
return $object;
}
调用的时候只需要:
$myValue = getVarValue('myVar', 'http://api.myserver.com/myval?param=value');
这样就可以了。
经实测,原先需要1200毫秒才能返回的页面,现在只需要400毫秒。