在设计一个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毫秒。


张京
13.4k 声望4.7k 粉丝

现任北京联云天下科技有限公司技术副总裁。1994年毕业于清华大学计算机科学与技术专业;20多年软件开发及项目管理经验;历任亚洲生活网络公司CTO,摩托罗拉软件中心QSE工具经理,融信恒通技术总监,安必信软件公...