Php Can';t获取memcache以返回值

Php Can';t获取memcache以返回值,php,memcached,Php,Memcached,我使用了一个memcache脚本,我以前使用过,没有问题,但在新页面上,我没有得到任何响应 memcache位于另一个页面包含的函数中。 我所做的是将md5散列放入mysql查询,并将其存储为memcached数据的密钥。如果密钥不在memcache中,那么我就去创建数据,将其放入memcache并返回 我认为代码相当简单。这里是重要的部分(这是一个创建输出的大页面,所以你不需要所有这些,尽管我认为“返回”很重要,因为我担心这可能是我搞砸的地方 我用 $outList.= outData($ge

我使用了一个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 = @$memcache->get(MD5($getList));
#Notice: Undefined variable: memcache in /home/topbit/736160.php on line 9

它从哪里获得变量$memcache?它没有传递到函数中。

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

function outData($memcache, $getList)

如果您在调试时删除@将非常有帮助…..这也是为什么我在运行开发环境时会显示最严格的错误和警告。我希望看到PHP发现的代码中的所有错误,哪怕是稍微有点不正确的地方。警告是一个错误,稍后会回来咬您。很抱歉,我正在使用@来删除代码当memcache出现故障或未连接时,我应该知道这会抑制我应该看到的错误。我的错误:(