Ejemplo n.º 1
0
$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');