无法获取memcache返回值

时间:2009-04-09 22:34:31

标签: php memcached

我已经采用了一些我之前使用过的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 个答案:

答案 0 :(得分:5)

所有那些@的抑制错误,没有办法知道什么是失败。

我跑了 - 没听到@的答案然后答案突然出现 - 就行了:

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

它在哪里得到变量$ memcache?它没有传递给函数。

答案 1 :(得分:2)

问题在于范围。在函数中,全局范围中的变量不会自动传递,您必须将它们作为参数添加到函数中。

function outData($memcache, $getList)