Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Verwendung des Opcode-Cache in PHP

Einführung in die Verwendung des Opcode-Cache in PHP

小云云
小云云Original
2018-03-28 10:19:381285Durchsuche

Dieser Artikel stellt hauptsächlich die einfache Verwendung des Opcode-Cache in PHP vor und analysiert das Konzept, das Prinzip, das einfache Öffnen und die Verwendung von Opcode in Form von Beispielen. Ich hoffe, dass er allen helfen kann .

Das Beispiel in diesem Artikel beschreibt die einfache Verwendung des Opcode-Cache in PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

1. Was ist Opcode?

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

2. Der Unterschied zwischen einem Interpreter und einem Compiler

Der Interpreter generiert den Zwischencode und führt den Zwischencode direkt aus Hände des Dolmetschers.

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 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 Opcode wird generiert

Er muss zunächst einer lexikalischen Analyse unterzogen werden. Der Skriptcode kann als eine Reihe von Wörtern betrachtet werden Kombinationen. Der Interpreter muss diese Wörter klassifizieren und

zum Beispiel drucken, wir schauen uns zend/zend_lingual_scanner.l im PHP-Quellpaket an zu drucken. 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 in zend /zend_compile.c Finden Sie den Implementierungscode dieser Funktion in . 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


<?php print_r(apc_cache_info());?>

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

Ablauf des Opcode-Cache

Wenn der Opcode-Cache abläuft, muss er natürlich auch erneut generiert werden Überspringen Sie die Ablaufprüfung. Stellen Sie


apc.stat=off

in php.ini ein, damit die Änderung des Programmcodes durch einen Neustart des Servers wirksam wird.

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

xdebug-Funktionsverfolgung:


xdebug.trace_output_dir = /tmp/xdebug
xdebug.trace_output_name = trace.%c

Sie können wincachegrind verwenden, um den xdebug-Bericht unten anzuzeigen Fensterdokument.

Verwandte Empfehlungen:

Umfassendes Verständnis der Opcode-Optimierung in PHP (Bilder und Texte)

Opcode-Cache macht PHP noch besser leistungsstark

Opcodes (Operationscodes) zum Verständnis der PHP-Prinzipien_PHP-Tutorial


Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung des Opcode-Cache in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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