Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der Opcode-Cache-Nutzung in PHP

Detaillierte Erläuterung der Opcode-Cache-Nutzung in PHP

php中世界最好的语言
Freigeben: 2023-03-26 11:08:02
Original
1588 Leute haben es durchsucht

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="//m.sbmmt.com/wiki/57.html" target="_blank">string<code>parsekit_compile_<a href="//m.sbmmt.com/wiki/57.html" target="_blank">string</a>()()

php -r "var_dump(parsekit_compile_string(&#39;print 1+1;&#39;));"
Nach dem Login kopieren

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.l

In 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.y

kö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.

6. Opcode-Caching aktivieren

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 Sie

apc.cache_by_default = on
Nach dem Login kopieren

in php.ini fest, um den Cache-Status über

<?php print_r(apc_cache_info());?>
Nach dem Login kopieren

,

7.opcode-Cache-Ablauf< zu überprüfen 🎜>

Der Opcode-Cache läuft ab, er muss natürlich auch neu generiert werden und

apc.stat=off
Nach dem Login kopieren

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>
Nach dem Login kopieren

xdebug-Funktionsverfolgung:

xdebug.trace_output_dir = /tmp/xdebug
xdebug.trace_output_name = trace.%c
Nach dem Login kopieren

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 PHP

Laravel 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage