SqlDbCollector.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace KarmaFW\Database\Sql;
  3. use \DebugBar\DataCollector\DataCollector;
  4. use \DebugBar\DataCollector\Renderable;
  5. use \DebugBar\DataCollector\AssetProvider;
  6. /* USE THIS WITH DEBUGBAR (see http://phpdebugbar.com/ or https://github.com/maximebf/php-debugbar ) */
  7. class SqlDbCollector extends DataCollector implements Renderable, AssetProvider
  8. {
  9. protected $sql_queries = [];
  10. protected $totalExecTime = 0;
  11. public function collect()
  12. {
  13. return [
  14. 'nb_statements' => count($this->sql_queries),
  15. 'accumulated_duration' => $this->totalExecTime,
  16. 'accumulated_duration_str' => round($this->totalExecTime, 5),
  17. 'statements' => $this->sql_queries,
  18. ];
  19. }
  20. public function getName()
  21. {
  22. return 'sql_queries';
  23. }
  24. public function addQuery($query)
  25. {
  26. $this->sql_queries[] = $query;
  27. $this->totalExecTime += $query['duration'];
  28. }
  29. public function getWidgets()
  30. {
  31. return [
  32. "sql" => [
  33. "icon" => "inbox",
  34. "tooltip" => "SQL Queries",
  35. //"widget" => "PhpDebugBar.Widget",
  36. "widget" => "PhpDebugBar.Widgets.SQLQueriesWidget",
  37. //"widget" => "PhpDebugBar.Widgets.MessagesWidget",
  38. "map" => "sql_queries",
  39. "default" => "[]"
  40. ],
  41. "sql:badge" => [
  42. "map" => "sql_queries.nb_statements",
  43. "default" => 0
  44. ],
  45. ];
  46. }
  47. public function getAssets()
  48. {
  49. return array(
  50. 'css' => 'widgets/sqlqueries/widget.css',
  51. 'js' => 'widgets/sqlqueries/widget.js'
  52. );
  53. }
  54. }