Рубрики
Uncategorized

Сервисы Memcache и отдыха

Автор оригинала: David Wong.

При разработке плагина WordPress нам необходимо использовать содержимое таблиц базы данных, не относящихся к WordPress. Прямой доступ к таблицам базы данных-самый быстрый способ, но он кажется слишком сложным. Поэтому мы решили использовать метод доступа к сервису RESTful для удаленного вызова данных. Еще одна проблема, возникшая в это время, заключается в том, что каждый раз, когда нам нужно получить удаленный доступ через HTTP-запросы, это будет влиять на производительность. Почему бы не сохранить удаленно полученные данные в memcache, что значительно экономит время HTTP-запросов.

Код выглядит следующим образом:

function getVarValue($var_name, $url) {
    // Connect to Memcache
    $memcache_obj = memcache_connect('localhost', 11211);
    $obj_memcache = memcache_get($memcache_obj, $var_name);
    if ($obj_memcache) {
        // If a variable is found in memcache, it is directly fetched
        $object = unserialize($obj_memcache);
    } else {
        // Getting variable content
        $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);
        // Store variable contents in 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 миллисекунд.