コード例 #1
0
 /**
  * actual logic for retrieving data.
  */
 protected function multiGet(array $ids)
 {
     $result = array_fill_keys($ids, NULL);
     foreach (Util::parseIds($ids) as $shard => $sequences) {
         $table = $this->table($shard);
         $db = $this->db($table);
         if (DB\Transaction::inProgress()) {
             DB\Transaction::add($db);
         }
         $sql = "SELECT `sequence`,`data` FROM `{$table}` WHERE `thread` = %s AND `sequence` IN( %i )";
         $rs = $db->execute($sql, $this->thread, $sequences);
         while ($row = $rs->fetch()) {
             $id = Util::composeId($shard, $row['sequence']);
             $result[$id] = $this->unserialize($row['data']);
         }
         $rs->free();
     }
     foreach (array_keys($result, NULL, TRUE) as $rm) {
         unset($result[$rm]);
     }
     return $result;
 }