$installUidProvider = new InstallUidProvider($gameVersion, PdoFactory::makePool($gameVersion)); $shardList = ShardHelper::listShardId($gameVersion); $queue = new UidQueue(UID_QUEUE_DIR, $gameVersion, $shardList); $stepGenerator = WorkRoundGenerator::generate($now, $quitTimestamp, $interval, false); foreach ($stepGenerator as $timestamp) { $msg = $myself . ': ' . date('c', $timestamp) . ' run with ts ' . date('c', $timestamp); appendLog($msg); $date = $specifiedDate ? $specifiedDate : date('Y-m-d'); $groupedUidList = $installUidProvider->generate($date, function ($shardId, $userCount, $delta) { if ($userCount === 0) { return; } appendLog(sprintf('%s install(%d) cost %s', $shardId, $userCount, PHP_Timer::secondsToTimeString($delta))); }); $queue->push($groupedUidList); $deltaList = $installUidProvider->getDeltaList(); $totalCount = 0; foreach ($groupedUidList as $shardId => $shardUidList) { $shardCount = count($shardUidList); if ($shardCount === 0) { continue; } $totalCount += $shardCount; } appendLog(sprintf('%s: %s found %d install user, cost %s', $myself, date('c'), $totalCount, PHP_Timer::secondsToTimeString(array_sum($deltaList)))); $logFile = call_user_func($logFileGetter, $gameVersion, $date); file_put_contents($logFile, date('c') . ' have ' . $totalCount . PHP_EOL . print_r($groupedUidList, true)); if ($specifiedDate) { dump(date('c')); dump($groupedUidList); dump($myself . ': quit');