dolibarr  13.0.2
DolQueryCollector.php
1 <?php
2 
3 use DebugBar\DataCollector\AssetProvider;
4 use DebugBar\DataCollector\DataCollector;
5 use DebugBar\DataCollector\Renderable;
6 use DebugBar\DebugBarException;
7 
8 dol_include_once('/debugbar/class/TraceableDB.php');
9 
13 class DolQueryCollector extends DataCollector implements Renderable, AssetProvider
14 {
18  protected $db;
19 
23  public function __construct()
24  {
25  global $db;
26 
27  // Replace $db handler with new handler override by TraceableDB
28  $db = new TraceableDB($db);
29 
30  $this->db = $db;
31  }
32 
38  public function collect()
39  {
40  $queries = array();
41  $totalExecTime = 0;
42  $totalMemoryUsage = 0;
43  $totalFailed = 0;
44  foreach ($this->db->queries as $query) {
45  $queries[] = array(
46  'sql' => $query['sql'],
47  'duration' => $query['duration'],
48  'memory' => $query['memory_usage'],
49  'is_success' => $query['is_success'],
50  'error_code' => $query['error_code'],
51  'error_message' => $query['error_message']
52  );
53  $totalExecTime += $query['duration'];
54  $totalMemoryUsage += $query['memory_usage'];
55  if (!$query['is_success']) {
56  $totalFailed += 1;
57  }
58  }
59 
60  return array(
61  'nb_statements' => count($queries),
62  'nb_failed_statements' => $totalFailed,
63  'accumulated_duration' => $totalExecTime,
64  'memory_usage' => $totalMemoryUsage,
65  'statements' => $queries
66  );
67  }
68 
74  public function getName()
75  {
76  return 'query';
77  }
78 
84  public function getWidgets()
85  {
86  global $langs;
87 
88  $title = $langs->transnoentities('Database');
89 
90  return array(
91  "$title" => array(
92  "icon" => "arrow-right",
93  "widget" => "PhpDebugBar.Widgets.SQLQueriesWidget",
94  "map" => "query",
95  "default" => "[]"
96  ),
97  "$title:badge" => array(
98  "map" => "query.nb_statements",
99  "default" => 0
100  )
101  );
102  }
103 
109  public function getAssets()
110  {
111  return array(
112  'css' => 'widgets/sqlqueries/widget.css',
113  'js' => 'widgets/sqlqueries/widget.js'
114  );
115  }
116 }
if(!function_exists('dol_getprefix')) dol_include_once($relpath, $classname= '')
Make an include_once using default root and alternate root if it fails.
DolQueryCollector class.
__construct()
Constructor.
TraceableDB class.
Definition: TraceableDB.php:10
$conf db
API class for accounts.
Definition: inc.php:54
collect()
Return collected data.
getWidgets()
Return widget settings.
getAssets()
Return assets.
getName()
Return collector name.