2012-04-11 11 views
1

memcacheで初めて遊んでみましょう。ここに私のコードは次のとおりです。なぜmemcache-> get()はデータベースから最初の行だけを取得しますか?

$memcache = new Memcache(); 
    $memcache->connect('127.0.0.1', 11211) or die('Memcache connection error'); 

    // set the key then check the cache 
    $key = md5(' SELECT * FROM `users` '); 
    $get_result = $memcache->get($key); 

    if($get_result) { 
     echo "Data Pulled From Cache"; 
     var_dump($get_result); 
    } 
    else { 
     $query = ' SELECT * FROM `users` '; 
     $result = mysql_query($query); 
     $row = mysql_fetch_assoc($result); 
     $memcache->set($key, $row, TRUE, 20); // stored for 20 seconds 

     echo "Data Pulled from the Database"; 
     var_dump($row); 
    } 

私はVaRのダンプのみ第一のユーザを示してどのように来る、私のユーザーテーブルに50,000ダミーのユーザーを持っていますか?ご覧のとおり、クエリには制限句はありません。

+0

あなたは 'のvar_dump($ get_result)' 'のvar_dump($ [「ユーザ名」] get_resultべきではありません); ' – Baba

答えて

3

$resultリソースから1行だけを取得しています。あなたは完全な行セットが必要な場合は、whileループ内の各行をフェッチし、アレイ上にそれらを追加する必要があります。

$rowset = array(); 
    while($row = mysql_fetch_assoc($result)) { 
    // Fetch all rows in loop, appending each onto $rowset 
    $rowset[] = $row; 
    } 
    // Store $rowset into memcache 
    $memcache->set($key, $rowset, TRUE, 20); // stored for 20 seconds 
関連する問題