0

以前に問題なく使用した 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 行にあると思われますが、同じコードが別のページで問題なく使用されています。

これで何か問題がありますか?

4

2 に答える 2

5

これらすべての@の抑制エラーでは、何が失敗しているかを知る方法はありません。

私はそれを実行しました-@はありませんが、答えはすぐにポップアップしました-次の行にあります:

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

変数$memcacheはどこで取得されますか?関数には渡されません。

于 2009-04-09T22:51:34.710 に答える
2

問題は範囲です。関数内で、グローバル スコープ内の変数が自動的に渡されない場合は、変数をパラメーターとして関数に追加する必要があります。

function outData($memcache, $getList)
于 2009-04-10T00:31:59.400 に答える