/**
  * @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;
 }