/** * @param string $gameVersion * * @return Generator */ function mysqlDsnGenerator($gameVersion) { $shardList = \Environment\PlatformFactory::make($gameVersion)->getMySQLShards(); foreach ($shardList as $shard) { (yield $shard); } }
/** * @param string $gameVersion * * @return array ['db1', 'db2', ...] */ public static function listShardId($gameVersion) { $optionsGenerator = PlatformFactory::make($gameVersion)->getMySQLShards(); $shardIdList = []; foreach ($optionsGenerator as $options) { $shardIdList[] = $options['shardId']; } return $shardIdList; }
<?php /** * Created by PhpStorm. * User: Jiang Yu * Date: 2015/07/07 * Time: 11:29 AM */ require __DIR__ . '/../../bootstrap.php'; $options = getopt('', ['gv:']); $gameVersion = isset($options['gv']) ? $options['gv'] : 'tw'; appendLog('game version: ' . $gameVersion); $shardList = \Environment\PlatformFactory::make($gameVersion)->getMySQLShards(); foreach ($shardList as $shard) { appendLog($shard); }
$pdo = new PDO($dsn, $dbItem['username'], $dbItem['password']); } catch (\PDOException $e) { throw new \Exception('connect to db failed: [' . $dsn . ']'); } $sql = $query->getSql(); dump($sql); $statement = $pdo->query($sql); $resultSet = $statement->fetchAll(PDO::FETCH_ASSOC); return array_map(function (array $data) { return $data['snsid']; }, $resultSet); } } $options = getopt('', ['concurrency:', 'date:', 'gv:']); $concurrency = isset($options['concurrency']) ? (int) $options['concurrency'] : 100; $gameVersion = isset($options['gv']) ? $options['gv'] : 'tw'; appendLog('game version: ' . $gameVersion . ', concurrency: ' . $concurrency); $base = __DIR__ . '/../../../farm-server-conf/'; assert(is_dir($base)); $esHost = '52.19.73.190'; $esPort = 9200; $esClient = new Client(['hosts' => [sprintf('http://%s:%d/', $esHost, $esPort)]]); //$docUpdater = new DocumentUpdater($esClient, $gameVersion); $docUpdater = new NonBlockingDocUpdater($concurrency); $updater = new UserStatusUpdater($gameVersion); dump($options); $query = array_key_exists('date', $options) ? new AllDeAuthorizedUserQuery($options['date']) : new DeAuthorizedUserQuery(); $resultSet = $updater->run(\Environment\PlatformFactory::make($gameVersion), $query, $docUpdater); dump($resultSet); dump('Run time: ' . PHP_Timer::timeSinceStartOfRequest()); dump(sprintf('Memory: %4.2fMb', memory_get_peak_usage(true) / 1048576));
/** * @param string $gameVersion * * @return false|\PDO */ public static function makeGlobalPdo($gameVersion) { $pdoPool = self::makePool($gameVersion); $shardId = PlatformFactory::make($gameVersion)->locateIdMap(); return $pdoPool->getByShardId($shardId); }