Added generic constructor–centric record class.
This commit is contained in:
1 parent
3cae2765cb
commit
e74777c2a9
7 files changed
+135
-116
No files matched your search
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace Rarst\Laps\Record;
|
||||
|
||||
/**
|
||||
* Generic record with all properties set by constructor.
|
||||
*/
|
||||
class Record implements Record_Interface {
|
||||
|
||||
/** @var string $name */
|
||||
protected $name;
|
||||
|
||||
/** @var float $origin */
|
||||
protected $origin;
|
||||
|
||||
/** @var float $duration */
|
||||
protected $duration;
|
||||
|
||||
/** @var string $description */
|
||||
protected $description;
|
||||
|
||||
/** @var string $category */
|
||||
protected $category;
|
||||
|
||||
/**
|
||||
* @param string $name Name.
|
||||
* @param float $origin Start time.
|
||||
* @param float $duration Duration.
|
||||
* @param string $description Optional description.
|
||||
* @param string $category Optional category.
|
||||
*/
|
||||
public function __construct( $name, $origin, $duration, $description = '', $category = '' ) {
|
||||
$this->name = $name;
|
||||
$this->origin = $origin;
|
||||
$this->duration = $duration;
|
||||
$this->description = $description;
|
||||
$this->category = $category;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function get_name() {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function get_description() {
|
||||
|
||||
if ( empty( $this->description ) ) {
|
||||
$duration = round( $this->get_duration() * 1000 );
|
||||
|
||||
return "{$this->name} – {$duration} ms";
|
||||
}
|
||||
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function get_origin() {
|
||||
return $this->origin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function get_duration() {
|
||||
return $this->duration;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function get_category() {
|
||||
return $this->category;
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Rarst\Laps\Record;
|
||||
|
||||
/**
|
||||
* SQL record of a query event.
|
||||
*/
|
||||
class Sql_Record implements Record_Interface {
|
||||
|
||||
/** @var string $sql */
|
||||
protected $sql;
|
||||
|
||||
/** @var float $origin */
|
||||
protected $origin;
|
||||
|
||||
/** @var int $duration */
|
||||
protected $duration;
|
||||
|
||||
/** @var string $category */
|
||||
protected $category;
|
||||
|
||||
/**
|
||||
* @param string $sql SQL query.
|
||||
* @param float $origin Start time.
|
||||
* @param int $duration Query duration.
|
||||
* @param string $category Query type.
|
||||
*/
|
||||
public function __construct( $sql, $origin, $duration, $category = 'query-read' ) {
|
||||
$this->sql = $sql;
|
||||
$this->origin = $origin;
|
||||
$this->duration = $duration;
|
||||
$this->category = $category;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function get_name() {
|
||||
return $this->sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function get_description() {
|
||||
|
||||
$duration = round( $this->duration * 1000 ); // s to ms.
|
||||
|
||||
return "{$this->sql} – {$duration} ms";
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float Timestamp of record start.
|
||||
*/
|
||||
public function get_origin() {
|
||||
return $this->origin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float Record duration in seconds.
|
||||
*/
|
||||
public function get_duration() {
|
||||
return $this->duration;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function get_category() {
|
||||
return $this->category;
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ class Sql_Record_Collector implements Record_Collector_Interface {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Sql_Record[]
|
||||
* @return Record[]
|
||||
*/
|
||||
public function get_records() {
|
||||
|
||||
@@ -54,6 +54,7 @@ class Sql_Record_Collector implements Record_Collector_Interface {
|
||||
$query_data = [];
|
||||
$last_query_end = 0;
|
||||
|
||||
// TODO process call trace from the data.
|
||||
foreach ( $wpdb->queries as $key => list( $sql, $duration ) ) {
|
||||
$query_start = isset( $this->query_starts[ $key ] ) ? $this->query_starts[ $key ] : $last_query_end;
|
||||
$sql = trim( $sql );
|
||||
@@ -65,7 +66,7 @@ class Sql_Record_Collector implements Record_Collector_Interface {
|
||||
|
||||
$last_query_end = $query_start + $duration;
|
||||
|
||||
$query_data[] = new Sql_Record( $sql, $query_start, $duration, $category );
|
||||
$query_data[] = new Record( $sql, $query_start, $duration, '', $category );
|
||||
}
|
||||
|
||||
return $query_data;
|
||||
|
||||
Reference in new issue
Block a user