1

初めてmemcacheをいじってみてください。これが私のコードです:

    $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);
    }

usersテーブルに50,000人のダミーユーザーがいますが、varダンプに最初のユーザーのみが表示されるのはなぜですか?ご覧のとおり、クエリには制限句はありません。

4

1 に答える 1

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
于 2012-04-11T01:46:12.960 に答える