Ich versuche OOP zu verstehen und machte meine eigene Klasse eine MySQL-DBZeit zwischen den Funktionen in der Klasse messen? Das Ergebnis ist dieses
class Benchmark
{
protected $sql, $db;
public $result, $time;
public function __construct($host, $user, $pass, $db, $result = array(), $time = null)
{
/* Vars */
$this->db = $db;
$this->result = $result;
$this->time = $time;
/*Start Timer */
$this->time = microtime(true);
/* Connect to DB */
$this->sql = new \mysqli($host, $user, $pass);
/* Measure Time and put result to array */
$this->result['benchmark']['connect'] = $this->elapsedTime($this->time);
}
public function testMySQL()
{
/* Connect to DB */
$this->sql->select_db($this->db);
$this->result['benchmark']['selectDb'] = $this->elapsedTime($this->time);
/* Fetch Version */
$version = $this->sql->server_version;
$this->result['benchmark']['version'] = $this->elapsedTime($this->time);
$this->result['info']['version'] = $version;
/* Benchmark */
$this->sql->query('SELECT BENCHMARK(1000000,ENCODE("hello",RAND()));');
$this->result['benchmark']['result'] = $this->elapsedTime($this->time);
/* Close Connection */
$this->sql->close();
/* Total Time */
$this->result['info']['total'] = $this->elapsedTime($this->time);
$this->dump($this->result);
}
}
jedoch zum Benchmark:
Array
(
[benchmark] => Array
(
[connect] => 0.001
[selectDb] => 0.001
[version] => 0.001
[result] => 10.181
)
[info] => Array
(
[version] => 50713
[total] => 10.181
)
)
Warum tut die Zeit aufsummieren? Sollte in diesem Fall nicht [total]
10.184
sein?
Die ursprüngliche Idee ist von hier: https://github.com/odan/benchmark-php und das funktioniert. Wenn ich dieselben Daten für dieses Skript verwende, addiert es sich, wo liege ich falsch? Ich denke, es hat etwas obwohl mit meinem Mangel an OOP zu tun ...
EDIT
public function elapsedTime($time)
{
return number_format(microtime(true) - $time, 3);
}
Wo wird "elapsedTime" definiert? –
Aktualisiert für Klarheit – PrimuS