mirror of
https://github.com/dg/dibi.git
synced 2025-02-19 15:45:27 +01:00
removed support for FirePHP
This commit is contained in:
parent
30dec49a9d
commit
0129d340d3
@ -13,9 +13,6 @@ Tracy\Debugger::enable();
|
||||
$dibi = new Dibi\Connection([
|
||||
'driver' => 'sqlite3',
|
||||
'database' => 'data/sample.s3db',
|
||||
'profiler' => [
|
||||
'run' => true,
|
||||
],
|
||||
]);
|
||||
|
||||
|
||||
|
@ -13,9 +13,6 @@ Tracy\Debugger::enable();
|
||||
$dibi = new Dibi\Connection([
|
||||
'driver' => 'sqlite3',
|
||||
'database' => 'data/sample.s3db',
|
||||
'profiler' => [
|
||||
'run' => true,
|
||||
],
|
||||
]);
|
||||
|
||||
|
||||
|
@ -19,8 +19,7 @@ $dibi = new Dibi\Connection([
|
||||
'database' => 'data/sample.s3db',
|
||||
// enable query logging to this file
|
||||
'profiler' => [
|
||||
'run' => true,
|
||||
'file' => 'data/log.sql',
|
||||
'file' => 'log/log.sql',
|
||||
],
|
||||
]);
|
||||
|
||||
@ -37,6 +36,6 @@ try {
|
||||
|
||||
|
||||
// outputs a log file
|
||||
echo '<h2>File data/log.sql:</h2>';
|
||||
echo '<h2>File log/log.sql:</h2>';
|
||||
|
||||
echo '<pre>', file_get_contents('data/log.sql'), '</pre>';
|
||||
echo '<pre>', file_get_contents('log/log.sql'), '</pre>';
|
||||
|
@ -1,47 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
ob_start(); // needed by FirePHP
|
||||
?>
|
||||
<!DOCTYPE html><link rel="stylesheet" href="data/style.css">
|
||||
|
||||
<h1>Using Profiler | dibi</h1>
|
||||
|
||||
<?php
|
||||
|
||||
if (@!include __DIR__ . '/../vendor/autoload.php') {
|
||||
die('Install packages using `composer install`');
|
||||
}
|
||||
|
||||
|
||||
$dibi = new Dibi\Connection([
|
||||
'driver' => 'sqlite3',
|
||||
'database' => 'data/sample.s3db',
|
||||
'profiler' => [
|
||||
'run' => true,
|
||||
],
|
||||
]);
|
||||
|
||||
|
||||
// execute some queries...
|
||||
for ($i = 0; $i < 20; $i++) {
|
||||
$res = $dibi->query('SELECT * FROM [customers] WHERE [customer_id] < ?', $i);
|
||||
}
|
||||
|
||||
// display output
|
||||
?>
|
||||
<p>Last query: <strong><?= dibi::$sql; ?></strong></p>
|
||||
|
||||
<p>Number of queries: <strong><?= dibi::$numOfQueries; ?></strong></p>
|
||||
|
||||
<p>Elapsed time for last query: <strong><?= sprintf('%0.3f', dibi::$elapsedTime * 1000); ?> ms</strong></p>
|
||||
|
||||
<p>Total elapsed time: <strong><?= sprintf('%0.3f', dibi::$totalTime * 1000); ?> ms</strong></p>
|
||||
|
||||
<br>
|
||||
|
||||
<p>Dibi can log to your Firebug Console. You first need to install the Firefox, Firebug and FirePHP extensions. You can install them from here:</p>
|
||||
|
||||
<ul>
|
||||
<li>Firebug: https://addons.mozilla.org/en-US/firefox/addon/1843
|
||||
<li>FirePHP: http://www.firephp.org/
|
||||
</ul>
|
@ -46,7 +46,7 @@ class Connection implements IConnection
|
||||
* - lazy (bool) => if true, connection will be established only when required
|
||||
* - result (array) => result set options
|
||||
* - formatDateTime => date-time format (if empty, DateTime objects will be returned)
|
||||
* - profiler (array or bool)
|
||||
* - profiler (array)
|
||||
* - run (bool) => enable profiler?
|
||||
* - file => file to log
|
||||
* - substitutes (array) => map of driver specific substitutes (under development)
|
||||
@ -97,20 +97,9 @@ class Connection implements IConnection
|
||||
$this->config = $config;
|
||||
|
||||
// profiler
|
||||
$profilerCfg = &$config['profiler'];
|
||||
if (is_scalar($profilerCfg)) {
|
||||
$profilerCfg = ['run' => (bool) $profilerCfg];
|
||||
}
|
||||
if (!empty($profilerCfg['run'])) {
|
||||
$filter = $profilerCfg['filter'] ?? Event::QUERY;
|
||||
|
||||
if (isset($profilerCfg['file'])) {
|
||||
$this->onEvent[] = [new Loggers\FileLogger($profilerCfg['file'], $filter), 'logEvent'];
|
||||
}
|
||||
|
||||
if (Loggers\FirePhpLogger::isAvailable()) {
|
||||
$this->onEvent[] = [new Loggers\FirePhpLogger($filter), 'logEvent'];
|
||||
}
|
||||
if (isset($config['profiler']['file']) && (!isset($config['profiler']['run']) || $config['profiler']['run'])) {
|
||||
$filter = $config['profiler']['filter'] ?? Event::QUERY;
|
||||
$this->onEvent[] = [new Loggers\FileLogger($config['profiler']['file'], $filter), 'logEvent'];
|
||||
}
|
||||
|
||||
$this->substitutes = new HashMap(function ($expr) { return ":$expr:"; });
|
||||
|
@ -1,92 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This file is part of the "dibi" - smart database abstraction layer.
|
||||
* Copyright (c) 2005 David Grudl (https://davidgrudl.com)
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Dibi\Loggers;
|
||||
|
||||
use Dibi;
|
||||
|
||||
|
||||
/**
|
||||
* dibi FirePHP logger.
|
||||
*/
|
||||
class FirePhpLogger
|
||||
{
|
||||
use Dibi\Strict;
|
||||
|
||||
/** maximum number of rows */
|
||||
public static $maxQueries = 30;
|
||||
|
||||
/** maximum SQL length */
|
||||
public static $maxLength = 1000;
|
||||
|
||||
/** size of json stream chunk */
|
||||
public static $streamChunkSize = 4990;
|
||||
|
||||
/** @var int */
|
||||
public $filter;
|
||||
|
||||
/** @var float Elapsed time for all queries */
|
||||
public $totalTime = 0;
|
||||
|
||||
/** @var int Number of all queries */
|
||||
public $numOfQueries = 0;
|
||||
|
||||
/** @var array */
|
||||
private static $fireTable = [['Time', 'SQL Statement', 'Rows', 'Connection']];
|
||||
|
||||
|
||||
public static function isAvailable(): bool
|
||||
{
|
||||
return isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP/');
|
||||
}
|
||||
|
||||
|
||||
public function __construct(int $filter = null)
|
||||
{
|
||||
$this->filter = $filter ?: Dibi\Event::QUERY;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* After event notification.
|
||||
*/
|
||||
public function logEvent(Dibi\Event $event): void
|
||||
{
|
||||
if (headers_sent() || ($event->type & $this->filter) === 0 || count(self::$fireTable) > self::$maxQueries) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->numOfQueries) {
|
||||
header('X-Wf-Protocol-dibi: http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
|
||||
header('X-Wf-dibi-Plugin-1: http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.2.0');
|
||||
header('X-Wf-dibi-Structure-1: http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
|
||||
}
|
||||
$this->totalTime += $event->time;
|
||||
$this->numOfQueries++;
|
||||
self::$fireTable[] = [
|
||||
sprintf('%0.3f', $event->time * 1000),
|
||||
strlen($event->sql) > self::$maxLength ? substr($event->sql, 0, self::$maxLength) . '...' : $event->sql,
|
||||
$event->result instanceof \Exception ? 'ERROR' : (string) $event->count,
|
||||
$event->connection->getConfig('driver') . '/' . $event->connection->getConfig('name'),
|
||||
];
|
||||
|
||||
$payload = json_encode([
|
||||
[
|
||||
'Type' => 'TABLE',
|
||||
'Label' => 'dibi profiler (' . $this->numOfQueries . ' SQL queries took ' . sprintf('%0.3f', $this->totalTime * 1000) . ' ms)',
|
||||
],
|
||||
self::$fireTable,
|
||||
]);
|
||||
foreach (str_split($payload, self::$streamChunkSize) as $num => $s) {
|
||||
$num++;
|
||||
header("X-Wf-dibi-1-1-d$num: |$s|\\"); // protocol-, structure-, plugin-, message-index
|
||||
}
|
||||
header("X-Wf-dibi-1-1-d$num: |$s|");
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user