/** * */ public function test() { if (extension_loaded('xdebug')) { $this->assertTrue(true); return; } $gameVersion = 'tw'; $pool = PdoFactory::makePool($gameVersion); $provider = new InstallUidProvider($gameVersion, $pool); $groupedUidList = array_filter($provider->generate(date('Y-m-d'))); foreach ($groupedUidList as $shardId => $uidList) { static::assertStringStartsWith('db', $shardId); static::assertTrue(is_array($uidList)); static::assertEquals(range(0, count($uidList) - 1), array_keys($uidList)); } }
dump(sprintf('version: %s, from: %s, to: %s, safe: %d, magic: %d', $gameVersion, $fromDay, $toDay, $safeRound, $magicNumber)); } $calendarDayGenerator = CalendarDayGenerator::generate($fromDate->getTimestamp(), $toDate->getTimestamp()); $totalUser = 0; $processedRound = 0; foreach ($calendarDayGenerator as $calendarDay) { $markerDate = new DateTimeImmutable($calendarDay); if ($calendarMarker->isMarked($markerDate)) { appendLog('bypass ' . $markerDate->format('Y-m-d')); continue; } $msg = basename(__FILE__) . ': process for ' . $calendarDay . ' run with ts ' . date('c'); appendLog($msg); $groupedUidList = $installUidProvider->generate($calendarDay, function ($shardId, $userCount, $delta) { if ($userCount === 0) { return; } appendLog(sprintf('%s install(%d) cost %s', $shardId, $userCount, PHP_Timer::secondsToTimeString($delta))); }); $distribution = array_map(function (array $uidList) { return count($uidList); }, $groupedUidList); $newInstallCount = array_sum($distribution); appendLog(sprintf('Total %d new install on %s', $newInstallCount, $calendarDay)); $totalUser += $newInstallCount; $start = microtime(true); $groupedDetail = $userDetailProvider->generate($groupedUidList); $delta = microtime(true) - $start; appendLog(sprintf('Total %d new install on %s, read detail cost %s', $newInstallCount, $calendarDay, PHP_Timer::secondsToTimeString($delta))); $esUpdateQueue = []; foreach ($groupedDetail as $payload) { $shardId = $payload['shardId'];