dg / dibi

Dibi - smart database abstraction layer
https://dibiphp.com
Other
487 stars 136 forks source link

FirePHP nefunguje v Chrome rozšírení #120

Closed matj closed 8 years ago

matj commented 10 years ago

Ahoj David, v Chrome rozsireni nefunguje FirePHP, ked som to upravil takto, tak to zacalo bezat:

Súbor: dibi\libs\DibiFirePhpLogger.php

Starý kód:

<?php

     /**
 * After event notification.
 * @return void
 */
public function logEvent(DibiEvent $event)
{
    if (headers_sent() || ($event->type & $this->filter) === 0 || count(self::$fireTable) > self::$maxQueries) {
        return;
    }

    $this->totalTime += $event->time;
    $this->numOfQueries++;
    self::$fireTable[] = array(
        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')
    );

    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');

    $payload = json_encode(array(
        array(
            'Type' => 'TABLE',
            'Label' => 'dibi profiler (' . $this->numOfQueries . ' SQL queries took ' . sprintf('%0.3f', $this->totalTime * 1000) . ' ms)',
        ),
        self::$fireTable,
    ));
    foreach (str_split($payload, 4990) 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|");
}

?>

Nový kód:

<?php

public function logEvent(DibiEvent $event) { if (headers_sent() || ($event->type & $this->filter) === 0 || count(self::$fireTable) > self::$maxQueries) { return; }

    $this->totalTime += $event->time;
    $this->numOfQueries++;
    self::$fireTable[] = array(
        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')
    );

    header('X-Wf-Protocol-1: http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
    header('X-Wf-1-Plugin-1: http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.2.0');
    header('X-Wf-1-Structure-1: http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');

    $payload = json_encode(array(
        array(
            'Type' => 'TABLE',
            'Label' => 'dibi profiler (' . $this->numOfQueries . ' SQL queries took ' . sprintf('%0.3f', $this->totalTime * 1000) . ' ms)',
        ),
        self::$fireTable,
    ));
    foreach (str_split($payload, 4990) as $num => $s) {
        $num++;
        header("X-Wf-1-1-1-$num: |$s|\\"); // protocol-, structure-, plugin-, message-index
    }
    header("X-Wf-1-1-1-$num: |$s|");

}

?>

Problémom sú tie textové reťazce v názve headeru.

FirePHP pre Chrome: https://chrome.google.com/webstore/detail/firephp4chrome/gpgbmonepdpnacijbbdijfbecmgoojma

ondrejmirtes commented 10 years ago

Co poslat normální pull request?

matj commented 10 years ago

jasne, urobim to tak, len este som zistil jednu zradu, ze nazov headeru nemoze byt natvrdo 1-1-1-.. lebo sa to moze bit s inymi Log zaznamami. Pozriem si to a urobim pull request.