Christoph Jeschke: Werden php Kommentare mitverarbeitet/geparst?

Beitrag lesen

Guten Tag,

Nun frage ich mich, wie das die Ladezeit einer Seite beeinflußt.
Wenn der php-Parser zu einer Zeile kommt, die mit //
beginnt, arbeitet er die dann ab, was zu einer Vergrößerung der Ladezeit
führen würde, oder springt er sofort zur nächsten Zeile, was die Ladezeit
einer Seite mit Kommentaren zu der einer Seite ohne selbigen nicht
verändern würde?

Nein, PHP liest den gesamten Text einer Seite ein, auch Blocks außerhalb der <?php-?>-Tags (das sind dann Inline-HTML-Blocks, T_INLINE_HTML (311). Der PHP-interne Tokenizer zerlegt ein Skript in seine Bestandteile, darunter gibt es auch das T_COMMENT-Token, welches den Inhalt des Kommentars enthält:

jeschkec@shire:~$ php -r "var_dump(token_get_all('<?php // blubb ?>'));"

  
array(3) {  
  [0]=>  
  array(3) {  
    [0]=>  
    int(367)  
    [1]=>  
    string(6) "<?php "  
    [2]=>  
    int(1)  
  }  
  [1]=>  
  array(3) {  
    [0]=>  
    int(365)  
    [1]=>  
    string(9) "// blubb "  
    [2]=>  
    int(1)  
  }  
  [2]=>  
  array(3) {  
    [0]=>  
    int(369)  
    [1]=>  
    string(2) "?>"  
    [2]=>  
    int(1)  
  }  
}

365 ist die interne Konstante für das T_COMMENT-Token, 367 und 369 für die Open- und Closing-Tags, 1 jeweils die Zeilennummer (in diesem Fall gibt es nur eine Zeile).

Summa sumarum: Ja, Kommentare haben, genau wie Nicht-PHP-Blocks, Einfluss auf die Performance. Zumindest was Kommentare angeht, ist dieser aber gut investiert. Du solltest dir auch mal phpdoc anschauen.

Man kann mit dem Tokenizer auch coole andere Sachen machen, zum Beispiel Call Charts.

Hugo Egon Balder

Karrierewechsel?

Gruß
Christoph Jeschke

--
Zend Certified Engineer
Certified Urchin Admin