/** * @param string $shardId * * @return array [uid, uid] */ protected function onShard($shardId) { $pdo = $this->pdoPool->getByShardId($shardId); if ($pdo === false) { return []; } $uidList = $this->queryMysql($pdo); return $uidList; }
/** * @param string $shardId * @param int $fromTs * * @return array [uid, uid] */ protected function onShard($shardId, $fromTs) { $pdo = $this->pdoPool->getByShardId($shardId); if ($pdo === false) { return []; } $start = microtime(true); $uidList = $this->fetchActiveUser($pdo, $fromTs); $delta = microtime(true) - $start; $this->deltaList[$shardId] = $delta; return $uidList; }
/** * @param array $uidList * * @return array */ public function find(array $uidList) { if (count($uidList) > 500) { trigger_error('Max 500 users as input args'); } $userList = []; $shardIdList = $this->pdoPool->listShardId(); foreach ($shardIdList as $shardId) { $pdo = $this->pdoPool->getByShardId($shardId); if ($pdo === false) { continue; } $shardUserList = []; $batchReader = CommonInfoProvider::readUserInfo($pdo, $uidList); foreach ($batchReader as $batchUserList) { $batchDataSet = $this->appendPaymentDigest($batchUserList); foreach ($batchDataSet as $uid => $userInfo) { $shardUserList[$uid] = $userInfo; } } $userList[$shardId] = $shardUserList; } return $userList; }