/**
  *
  */
 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));
     }
 }
Ejemplo n.º 2
0
    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'];