/** * */ public function test() { $gameVersion = self::$gameVersion; $shardIdList = ShardHelper::listShardId($gameVersion); $queue = new UidQueue(self::$dir, $gameVersion, $shardIdList); $groupedUidList = ['db1' => [1, 2, 3], 'db2' => [21, 22, 23]]; $queue->push($groupedUidList); $content = $queue->pop(); foreach ($groupedUidList as $shardId => $expectedUidList) { static::assertEquals($expectedUidList, $content[$shardId]); } }
/** * @param int $repeatTimes * @param int $waitTime */ public function run($repeatTimes, $waitTime) { $queue = new UidQueue(UID_QUEUE_DIR, $this->gameVersion, $this->shardList); $groupedUidList = $queue->pop(); array_walk($groupedUidList, function (array $uidList, $shardId) { if (count($uidList) === 0) { return; } appendLog(__CLASS__ . ': [before aggregate] ' . $shardId . ' have uid ' . count($uidList)); }); $afterAggregate = $this->aggregate($groupedUidList, $repeatTimes, $waitTime); $now = date('Y-m-d H:i:s'); array_walk($afterAggregate, function (array $uidList, $shardId) use($now) { if (count($uidList) === 0) { return; } appendLog(__CLASS__ . ': [after aggregate] ' . $shardId . ' have uid ' . count($uidList)); array_map(function ($uid) use($now) { \error_log(sprintf('%d => %s' . PHP_EOL, $uid, $now), 3, $this->logFile); }, $uidList); }); (new Manager($this->dataProvider, $this->indexer))->updateES($afterAggregate); }