Dieses Mal werde ich Ihnen die Verwendung des Opcode-Cache in PHP ausführlich erklären. Was sind die Vorsichtsmaßnahmen bei der Verwendung des Opcode-Cache in PHP?
1. Was ist Opcode?
Nachdem der Interpreter den Code analysiert hat, generiert er einen Zwischencode, der direkt ausgeführt werden kann, der als Opcode bezeichnet wird.
2. Interpreter und Kompilierung Der Unterschied zwischen Interpretern
Der Interpreter generiert den Zwischencode und führt den Zwischencode direkt aus. Die Kontrolle über die Laufzeit liegt weiterhin in den Händen des Interpreters.
Der Compiler generiert den Zwischencode und optimiert den Code weiter, um ein Zielprogramm zu generieren, das direkt ausgeführt werden kann, aber nicht ausgeführt wird. Seine Kontrolle liegt beim Zielprogramm und hat nichts mit dem Compiler zu tun.
3.php ist eine interpretierte Sprache. Ihr Prinzip ähnelt in gewisser Weise der Kompilierung, einschließlich lexikalischer Analyse, Syntaxanalyse, semantischer Analyse .... Die Kern-Engine des PHP-Interpreters ist die Zend-Engine
4.php So überprüfen Sie den Opcode eines Codestücks
Installieren Sie die Parsekit-Erweiterung von php, und Sie können den Opcode von PHP über überprüfen Erweiterte API, wie zum Beispiel parsekit_compile_<a href="http://www.php.cn/wiki/57.html" target="_blank">string<code>parsekit_compile_<a href="http://www.php.cn/wiki/57.html" target="_blank">string</a>()
()
php -r "var_dump(parsekit_compile_string('print 1+1;'));"
5.opcode wird generiert
Es muss zunächst eine lexikalische Analyse durchlaufen. Der Skriptcode kann als eine Reihe von Wortkombinationen betrachtet werden. Der Interpreter muss diese Wörter klassifizieren und markieren Zum Beispiel beim Drucken überprüfen wir das PHP-Quellcodepaket
zend/zend_lingual_scanner.lIn dieser Datei finden wir die Markierung, die pirnt entspricht. Nachdem T_PRINT die Markierung gefunden hat, ist der nächste Schritt die Syntaxanalyse. In
zend/zend_lingual_parser.ykönnen wir die Funktion finden, die T_PRINT< entspricht 🎜> und dann den Implementierungscode dieser Funktion in zend/zend_compile.c finden. Diese Funktion implementiert die Konvertierung von Opcode. Alle Opcodes werden durch Benutzer-Ganzzahlen
dargestellt. Das Generieren von Opcode erfordert einen erheblichen Systemaufwand, sodass ein Opcode generiert werden muss Caching, um eine wiederholte Kompilierung zu vermeiden. Der Opcode-Cache von PHP umfasst APC, eAccelerator und XCache, die alle Opcode im gemeinsamen Speicher ablegen. Nehmen Sie APC als Beispiel: Legen Sieapc.cache_by_default = on
<?php print_r(apc_cache_info());?>
Der Opcode-Cache läuft ab, er muss natürlich auch neu generiert werden und
apc.stat=off
in der php.ini setzen . Es wird durch einen Neustart des Servers wirksam.
8. Für die Skriptverfolgung und -analyse können Sie xdebug verwenden, um einen Leistungs-Tracker zu implementieren, den Ausführungsengpass des Programms zu finden und das Programm zu optimieren.
<p style="margin-bottom: 7px; margin-top: 14px;">xdebug.profiler_output_dir = /tmp/xdebug<br/>xdebug.profiler_output_name = cachegrind.out.%p</p>
xdebug-Funktionsverfolgung:
xdebug.trace_output_dir = /tmp/xdebug xdebug.trace_output_name = trace.%c
Sie können Wincachegrind verwenden, um die xdebug-Berichtsdatei unter dem Fenster anzuzeigen.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Detaillierte Erklärung der Verwendung von ungeraden und geraden Zahlen und Variablen in PHPLaravel ORMs Caching von Model::find Detaillierte Erläuterung der Methode
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Opcode-Cache-Nutzung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!