Einfache Verwendung des Opcode-Cache in PHP

不言
Freigeben: 2023-03-22 17:10:01
Original
1193 Leute haben es durchsucht

Dieser Artikel führt Sie in die einfache Verwendung des Opcode-Cachings in PHP ein und stellt ihn Ihnen als Referenz zur Verfügung

1 Was ist Opcode?

Nachdem der Interpreter den Code analysiert hat, wird er generiert Zwischencode, der direkt ausgeführt werden kann, wird Opcode genannt, Opcode

2. Der Unterschied zwischen einem Interpreter und einem Compiler

Der Interpreter führt den Zwischencode direkt aus, nachdem er ihn generiert hat, und die Laufzeit Die Kontrolle liegt immer noch in der Interpretation.

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, deren Prinzip der Kompilierung ähnelt, einschließlich lexikalischer Analyse, Syntaxanalyse, semantischer Analyse ..., die Kern-Engine des PHP-Interpreters ist die Zend-Engine

4.php So zeigen Sie den Opcode eines Codeabschnitts an

Installieren Sie die Parsekit-Erweiterung von PHP, und Sie können den Opcode von PHP über die erweiterte API anzeigen, z. B. parsekit_compile_string()

php -r "var_dump( parsekit_compile_string('print 1+1;'));"

5. Der generierte Opcode

muss zunächst einer lexikalischen Analyse unterzogen werden kann als eine Reihe von Wortkombinationen betrachtet werden.

Zum Beispiel schauen wir uns zend/zend_lingual_scanner.l im PHP-Quellpaket an Suchen Sie die entsprechende Markierung zum Drucken. T_PRINT

Nachdem wir die Markierung gefunden haben, ist der nächste Schritt die Syntaxanalyse in zend/zend_lingual_parser.y. Wir können die Funktion finden, die T_PRINT

entspricht, und dann den Funktionsimplementierungscode in zend/ finden. zend_compile.c, 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: Setzen Sie

apc.cache_by_default = on

in php.ini über


Sie können den Cache-Status überprüfen,

Der Opcode-Cache läuft ab

Der Opcode-Cache läuft ab läuft ab, Um ein neues zu generieren, können Sie natürlich auch den Ablaufprüfmechanismus überspringen und

apc.stat=off

in php.ini so einstellen, dass der Programmcode muss Um wirksam zu werden, müssen Sie den Server neu starten.

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.

xdebug.profiler_output_dir = /tmp/xdebug
xdebug.profiler_output_name = cachegrind.out.%p

xdebugs Funktionstrace:

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.

Verwandte Empfehlungen:

Einführung in die Opcode-Cache-Nutzung in PHP

Das obige ist der detaillierte Inhalt vonEinfache Verwendung des Opcode-Cache 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!