Не удается получить memcache для возврата значения - PullRequest
0 голосов
/ 10 апреля 2009

Я взял немного скрипта memcache, который использовал ранее без проблем, но на новой странице я не получил никакого ответа.

memcache находится в функции, которая включена с другой страницы. я помещаю хэш md5 в запрос mysql и сохраняю его как ключ для данных memcached. если ключ отсутствует в memcache, тогда я иду, создаю данные, помещаю их в memcache и возвращаю их.

Я думаю, что код довольно прост. Вот важные моменты (это большая страница, создающая вывод, так что вам все это не нужно, хотя «возврат», я думаю, важен, так как боюсь, что это может быть то, где я облажался.

Я вызываю функцию с

$outList.= outData($getList);   

где $ getList - это запрос mysql

Функция $ outList -

<?php

@$memcache = new Memcache;
@$memcache->connect("localhost",11211);

function outData($getList)
{
    $memVal = @$memcache->get(MD5($getList));
    if($memVal=='')
    {
        $results=mysql_query($getList)or die(mysql_error());

        // then I do a bunch of stuff with the data
        @$memcache->set(MD5($getList), $memVal, false, 60000);
    } 
    return $memVal;
}

Я могу отобразить весь материал для создания $ memVal, но я подозреваю, что ошибка находится в строке if, но этот же код используется на другой странице без проблем.

Что-то не так с этим выглядит?

Ответы [ 2 ]

5 голосов
/ 10 апреля 2009

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

Я его запустил - без @ и ответ выскочил прямо вверх - в строке:

$memVal = @$memcache->get(MD5($getList));
#Notice: Undefined variable: memcache in /home/topbit/736160.php on line 9

Где он получает переменную $ memcache? Не передается в функцию.

2 голосов
/ 10 апреля 2009

Проблема в объеме. Когда в функции переменные в глобальной области видимости не передаются автоматически, вам придется добавить их в качестве параметров в функцию.

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