コード例 #1
0
 /**
  * SyncMachine constructor.
  *
  * @param string $gameVersion
  * @param string $esHost
  */
 public function __construct($gameVersion, $esHost)
 {
     $this->gameVersion = $gameVersion;
     $this->esHost = $esHost;
     $date = date('Ymd');
     $persist = new AggregatorPersist(LOG_DIR . '/' . $gameVersion . '.uid.persist');
     $this->aggregator = new UidAggregator($persist);
     $this->shardList = ShardHelper::listShardId($gameVersion);
     $this->logFile = LOG_DIR . '/' . $date . '/' . $gameVersion . '.machine';
     $this->prepareLogDir($this->logFile);
     $this->dataProvider = new UserDetailProvider($gameVersion, PdoFactory::makePool($gameVersion));
     $this->indexer = IndexerFactory::make($esHost, $gameVersion, self::FLUSH_MAGIC_NUMBER);
 }
コード例 #2
0
$fromDate = date_create_from_format('Ymd', $fromDay);
if (!$fromDate instanceof \DateTime) {
    appendLog(sprintf('from [%s] not valid', $fromDay));
    return;
}
$toDate = date_create_from_format('Ymd', $toDay);
if (!$toDate instanceof \DateTime) {
    appendLog(sprintf('to [%s] not valid', $toDay));
    return;
}
$pdoPool = PdoFactory::makePool($gameVersion);
$installUidProvider = new InstallUidProvider($gameVersion, $pdoPool);
$userDetailProvider = new UserDetailProvider($gameVersion, $pdoPool);
$magicNumber = isset($options['magic']) ? (int) $options['magic'] : 500;
assert($magicNumber > 10);
$indexer = IndexerFactory::make(ELASTIC_SEARCH_HOST, $gameVersion, $magicNumber);
if ($verbose) {
    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) {
コード例 #3
0
ファイル: updateES.php プロジェクト: jiangyu7408/notification
} else {
    assert(isset($options['gv']), 'game version not defined');
    $gameVersion = trim($options['gv']);
}
$esHost = isset($options['es']) ? $options['es'] : '52.19.73.190';
assert(isset($options['uid']), 'uid not defined');
$uid = trim($options['uid']);
$msg = sprintf('game version: %s, ES host: %s, uid: %s', $gameVersion, $esHost, $uid);
$verbose && dump($msg);
$provider = new UserDetailProvider($gameVersion, PdoFactory::makePool($gameVersion));
$groupedUserList = array_filter($provider->find([$uid]));
if ($verbose) {
    dump(__FILE__);
    dump($groupedUserList);
}
$indexer = IndexerFactory::make($esHost, $gameVersion);
foreach ($groupedUserList as $shardId => $shardUserList) {
    $delta = $indexer->batchUpdate($shardUserList);
    $batchResult = $indexer->getBatchResult();
    dump(__FILE__);
    array_map(function ($errorString) {
        $decoded = json_decode($errorString, true);
        if (is_array($decoded)) {
            dump($decoded);
        } else {
            dump($errorString);
        }
    }, $batchResult);
    //    dump($indexer->getLastRoundData());
    dump('cost ' . PHP_Timer::secondsToTimeString($delta[0]));
}