#! /usr/bin/env php
<?php
use app\Bench;
use app\BenchDb;
require __DIR__ . '/../vendor/autoload.php';
$options = getopt('t:b::c::i::', ['batch::', 'iters::', 'conk::', 'db::', 'help::']);
if(isset($options['help'])){
usage();
exit(0);
}
$client = $options['t'] ?? null;
if(!$client || ! in_array($client, ['guzzle','react', 'amp'])){
echo 'Please, define one of clients for benchmark (guzzle, react, amp)'.PHP_EOL;
usage();
exit();
}
$batchSize = (int)($options['b'] ?? $options['batch'] ?? 0);
if($batchSize > 6000){
$batchSize = 6000;
}
if($batchSize <= 0){
$batchSize = 10;
}
$concurrency = (int)($options['c'] ?? $options['conk'] ?? 0);
if($concurrency <= 0){
$concurrency = 25;
}
$iterations = (int)($options['i']?? $options['iters'] ?? 0);
if($iterations <= 0){
$iterations = 1;
}
$useDb = isset($options['db']);
$mem = memory_get_peak_usage();
if(!$useDb){
(new Bench($client, $iterations, $concurrency, $batchSize))->run();
}else{
$dbconf = ['dsn'=>'pgsql:host=db;dbname=pgtest', 'host'=>'db','dbname'=>'pgtest', 'user'=>'pgdev', 'pass'=>'pgdev'];
(new BenchDb($client, $iterations, $batchSize, $dbconf))->run();
}
$memEnd = memory_get_peak_usage();
$memDelta = round(($memEnd - $mem)/(1024*1024), 2);
var_dump(compact('mem', 'memEnd', 'memDelta'));
function usage(){
echo <<<TXT
Simple usage:
bench -t={clientname}
Full featured usage examples:
becnh -t=react -b5000 -c25 -i5
bench -t=guzzle --batch=200 --conk=5 --iters=5 --db
Options:
-t Required, one of clients - react, guzzle, amp
-b --batch (how many urls should be fetched, max = 6000)
-c --conk Request concurrency
-i --iters Number of iterations for run benchmark and than calculate average time
--db Benchmark with database version, instead of file version
--help Show this instruction
TXT;
}
|