<?php ini_set('error_reporting', E_ALL | E_STRICT); ini_set('display_errors', 1); assert_options(ASSERT_ACTIVE, 1); require dirname(dirname(__DIR__)) . '/dist/libserverbench.phar'; use ServerBench\App\Client\Client as ClientApp; use ServerBench\App\Client\Poller; use ServerBench\Base\CliArguments; $arguments = new CliArguments(['c:' => 'concurrent:', 'C:' => 'connect:', 'T:' => 'time:', 'L:' => 'length:']); function mt() { return gettimeofday(true) * 1000; } if (!isset($arguments['concurrent']) && !isset($arguments['connect']) && !isset($arguments['time'])) { die("usage: benchmark.php -c {num of clients} -C {address} -T {timed testing}"); } define('NUM_OF_CLIENTS', $arguments->get('concurrent')); define('CONNECT', $arguments->get('connect')); define('TIME_TO_TESTING', $arguments->get('time') * 1000); define('LENGTH', $arguments->get('length', 100)); printf("clients %d, connect %s, time to testing %f sec, length %d\n", NUM_OF_CLIENTS, CONNECT, TIME_TO_TESTING / 1000, LENGTH); // ready $recv = []; $clients = []; $poller = new Poller(); $msg = str_repeat('-', LENGTH); for ($i = 0; $i < NUM_OF_CLIENTS; ++$i) { $client = new ClientApp(); $client->setSndHwm(1000000); $client->setRcvHwm(1000000);
/** * cli entry of serverbench's proxies * * @author Yuan B.J. */ require dirname(dirname(dirname(__DIR__))) . '/vendor/autoload.php'; require __DIR__ . '/misc.php'; use ServerBench\App\Server\Api; use ServerBench\Base\CliArguments; use ServerBench\Process\Util as ProcessUtil; use ServerBench\App\Server\PeriodicGc; use ServerBench\Proxy\Proxy; if (PHP_SAPI !== 'cli') { \ServerBench\Cli\printf_and_exit("please run @ cli.\n"); } $arguments = new CliArguments(array('l:' => 'listen:', 'd' => 'daemonize', 'D:' => 'dir:', 'T:' => 'title:', 'app:', 'ipcs:')); if (isset($arguments['dir'])) { chdir($arguments['dir']); } if (!isset($arguments['listen'])) { \ServerBench\Cli\printf_and_exit("argument --listen or -l should be set.\n"); } $listen_addr = explode(',', $arguments['listen']); if (!isset($arguments['ipcs'])) { \ServerBench\Cli\printf_and_exit("argument --ipcs should be set.\n"); } $ipcs = explode(',', $arguments['ipcs']); if (count($ipcs) != 2) { \ServerBench\Cli\printf_and_exit("argument --ipcs should be a couple of sock files.\n"); } $api = null;
* * @author Yuan B.J. */ require dirname(dirname(dirname(__DIR__))) . '/vendor/autoload.php'; require __DIR__ . '/misc.php'; use ServerBench\App\Server\Api; use ServerBench\Base\CliArguments; use ServerBench\Controller\Controller; use ServerBench\Process\Util as ProcessUtil; use ServerBench\App\Server\PeriodicGc; if (PHP_SAPI !== 'cli') { \ServerBench\Cli\printf_and_exit("please run @ cli.\n"); exit; } printf("\n%s\n", \ServerBench\Cli\get_logo()); $arguments = new CliArguments(['c:' => 'config:', 'l:' => 'listen:', 'd' => 'daemonize', 'D:' => 'dir:', 'h' => 'help', 'n::' => 'worker::', 'v' => 'version', 'T:' => 'title:', 'reload', 'stop', 'status', 'pidfile:', 'pid:', 'codec:', 'app:', 'ipcs:']); $not_met = []; if (!\ServerBench\Cli\check_requirements($not_met)) { \ServerBench\syslog_error('requirements is not met.'); foreach ($not_met as $item) { \ServerBench\syslog_error('failed to load extension(%s)', [$item]); } exit; } if (isset($arguments['version'])) { \ServerBench\Cli\printf_and_exit("version %s\n", \ServerBench\Cli\get_version()); } if (isset($arguments['help'])) { \ServerBench\Cli\printf_and_exit("%s\n", \ServerBench\Cli\get_usage()); } $phpbin = $_SERVER['_'];
/** * cli entry of serverbench's worker's pool * * @author Yuan B.J. */ require dirname(dirname(dirname(__DIR__))) . '/vendor/autoload.php'; require __DIR__ . '/misc.php'; use ServerBench\App\Server\Api; use ServerBench\Base\CliArguments; use ServerBench\Process\Util as ProcessUtil; use ServerBench\App\Server\PeriodicGc; use ServerBench\Worker\Worker; if (PHP_SAPI !== 'cli') { \ServerBench\Cli\printf_and_exit("please run @ cli.\n"); } $arguments = new CliArguments(['d' => 'daemonize', 'D:' => 'dir:', 'T:' => 'title:', 'app:', 'ipcs:']); $dir = $arguments->get('dir', getcwd()); if (isset($dir)) { chdir($dir); } $app_path = $arguments->get('app'); if (!isset($app_path)) { \ServerBench\Cli\printf_and_exit("arugment --app should be set.\n"); } if (!file_exists($app_path)) { \ServerBench\Cli\printf_and_exit("app(%s) does not exist.", $app_path); } if (!isset($arguments['ipcs'])) { \ServerBench\Cli\printf_and_exit("argument --ipcs should be set.\n"); } $ipcs = explode(',', $arguments['ipcs']);