Memcache + Mysqli Не удалось получить mysqli_result - PullRequest
1 голос
/ 05 ноября 2011

Я пытаюсь добавить немного скорости в проект, над которым я работаю, используя memcache.Однако у меня возникла проблема со следующим

    public function sql_query($query){

    $memcache = new Memcache;
    $memcache->connect('localhost', 11211) or die ("Could not connect");

    $memkey = md5($query);

    $get_result = $memcache->get($memkey);

    if ($get_result){
        return $get_result;
    } else {

        $q = $this->mysqli->query($query);

        $memcache->set($memkey, $q, false, 120) or die ("Failed to save data at the server");

        if ($this->mysqli->error){
          App::Error($this->mysqli->error);
        }

        return $q;
    }

}

Это, безусловно, помещает что-то в memcached, но я получаю эту ошибку, когда вытаскиваю ее обратно и использую, как если бы это было не из кеша.

"Warning: mysqli_result::fetch_assoc(): Couldn't fetch mysqli_result"

Я что-то упустил?Я уверен, что раньше использовал memcache подобным образом, без каких-либо проблем.

1 Ответ

3 голосов
/ 05 ноября 2011

Вы не можете сохранить все типы данных в memcached (и других хранилищах данных), наиболее часто не работающими являются ресурсы Документы ,например, ссылка на базу данных или идентификатор результата.

Вы сохранили такое значение, и по другому запросу вы извлекли его снова.Но поскольку база данных уже находится в другом состоянии, этот ресурс больше не работает.Тогда вы получите ошибку.

Вместо этого вам нужно сохранить данные результата из запроса, это статические данные, которые вы можете поместить в memcache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...