


Was ist OPCache? Wie verwende ich OPCache, um die PHP-Leistung zu verbessern?
Dieser Artikel stellt Ihnen OPCache vor und stellt detailliert vor, wie Sie OPCache verwenden, um die Leistung von PHP zu verbessern. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Bei einer interpretierten Sprache wie PHP wird der gesamte Code bei jeder Ausführung geladen und analysiert. Einerseits besteht der Vorteil darin, dass der Code jederzeit im laufenden Betrieb aktualisiert und geändert werden kann, da wir dies tun muss nicht kompiliert werden. Dies bringt jedoch auch ein Problem mit sich, nämlich dass übermäßiger Datenverkehr nicht bewältigt werden kann. Denn jedes Mal, wenn es geladen, analysiert und freigegeben wird, erhöht sich die Belastung der CPU. Normalerweise kann ein 8-Kern-16G-Server bei etwa 2000 oder 3000 Parallelitäten eine CPU-Auslastung von mehr als 60 % erreichen. Und wenn Sie ein großes Framework wie Laravel verwenden, wird die Effizienz noch geringer sein. Zu diesem Zeitpunkt erhöhen wir normalerweise die Anzahl der Server für den Lastausgleich, um den Serverdruck zu verringern. Allerdings werden die Kosten dafür deutlich steigen. Gibt es Optimierungslösungen?
In einem Artikel über PHP7-Optimierung von Bruder Niao in seinem Blog lautet der erste Vorschlag, OPcache zu aktivieren. Eine andere Möglichkeit ist natürlich auch die Verwendung von Swoole. Wir werden in Zukunft über Swoole sprechen. Heute werden wir zuerst OPcache lernen.
Was ist OPcache?
OPcache verbessert die Leistung von PHP, indem es den vorkompilierten Bytecode von PHP-Skripten im gemeinsamen Speicher speichert. Der Vorteil der Speicherung von vorkompiliertem Bytecode besteht darin, dass PHP nicht jedes Mal geladen und analysiert werden muss, wenn ein Skriptaufwand entsteht.
Dies ist eine Einführung in OPcache in der PHP-Dokumentation. Mit anderen Worten, OPcache speichert jedes Mal die Schritte des Ladens und Parsens und speichert den ersten analysierten und kompilierten Skript-Bytecode im gemeinsamen Speicher des Systems. Tatsächlich ähnelt dies einer unvollständigen Zusammenstellung.
Sprachen wie Java müssen gepackt und kompiliert werden, bevor sie online ausgeführt werden können, z. B. durch Packen in ein JAR-Paket. C++ oder C# können in eine DLL oder EXE gepackt werden. Bei diesen gepackten Dateien handelt es sich um kompilierte Dateien. Nach ihrer Ausführung bleiben sie im Allgemeinen weiterhin aktiv, das heißt, sie werden zu einem residenten Prozess und ihr Code gelangt in den Speicher. Wenn das Programm ausgeführt wird, ist keine Interpretation oder Kompilierung erforderlich, sodass die Geschwindigkeit natürlich viel höher ist. Auch OPcache spielt eine ähnliche Rolle. Es handelt sich jedoch nicht um einen vollständigen Kompilierungsprozess, um das Skript auszuführen. Nach dem Einschalten von OPcache durchsucht PHP-FPM jedoch zunächst, ob bereits relevanter zwischengespeicherter Bytecode vorhanden ist auf den Speicher wird direkt zugegriffen, andernfalls wird er erneut interpretiert und kompiliert und zwischengespeichert. Darüber hinaus gilt OPcache für Dateien. Das heißt, wenn eine Datei neu hinzugefügt wird, wird sie nur dann zwischengespeichert, wenn sie ausgeführt wurde. Wenn sie nicht ausgeführt wurde, befindet sie sich nicht im aktuellen gemeinsam genutzten Speicher.
Empfohlenes Lernen: „PHP-Video-Tutorial“
Opcache installieren
OPcache ist bereits eine offizielle Erweiterung von PHP und wird mit dem Installationspaket veröffentlicht, sodass wir beim Kompilieren und Installieren von PHP --enable-opcache verwenden können Um die Erweiterung zu aktivieren, ist sie bereits die Standarderweiterung. Sie können die Dateien im Installationspaket auch verwenden, um OPcache auf Systemen zu installieren, auf denen OPcache nicht installiert ist.
cd php-7.4.4/ext/opcache/ phpize ./configure make && make install
Es ist zu beachten, dass OPcache und Xdebug nicht zusammen in einer Produktionsumgebung verwendet werden sollten. Xdebug selbst wird nicht für die Verwendung in einer Produktionsumgebung empfohlen. Wenn Sie es gleichzeitig verwenden müssen, müssen Sie zuerst OPcache und dann Xdebug laden.
Nachdem die Erweiterung installiert ist, öffnen Sie die Erweiterung in der Datei php.ini. Es ist zu beachten, dass es sich bei der OPcache-Erweiterung um ein Zend-Erweiterungspaket handelt. Wir müssen also die Zend-Erweiterung öffnen.
zend_extension=opcache.so
Außerdem muss es aktiviert werden.
opcache.enable=1
Wenn OPcache aktiviert ist und wir den Code aktualisieren, werden wir feststellen, dass der Code, den wir gerade aktualisiert haben, nicht unser aktueller Code ist. Dies liegt daran, dass der Code wie bei Java zwischengespeichert wurde und wir den Dienst neu starten müssen. Was also startet PHP hier neu? Natürlich starten Sie einfach unser PHP-FPM neu. Verwenden Sie einfach den Befehl kill -USR2, um den Hauptprozess neu zu starten. Hier wird auch ein schneller Neustartbefehl gegeben.
ps -ef | grep "php-fpm: master" | grep -v grep | cut -c 9-15 | xargs kill -USR2
Vielen Dank an den Zhihu-Chef für die Korrektur. Ein Neustart von PHP-FPM ist nicht die beste Lösung. Sie sollten opcache_reset() verwenden, um manuell neu zu starten, oder opcache.validate_timestamps + opcache.revalidate_freq über die Datei php.ini konfigurieren In regelmäßigen Abständen kompilieren oder über opcache_compile_file() die geänderte Datei direkt neu kompilieren
ab-Testeffekt
Der Inhalt unseres Tests ist ein 2-Core-4G-Server in der Testumgebung. Die verwendete PHP-Version ist PHP7.4 , normale Nginx- und PHP-Konfiguration, ulimit wird ebenfalls maximal geöffnet. Der Code gibt einfach eine Textzeile aus, aber wir verwenden ein einfaches MVC-Framework, was bedeutet, dass dieser Code beim Ausführen mindestens mehrere Dateien lädt und nicht nur eine.
首先我们来看未开启 OPcache 的情况。
接下来是开启了 OPcache 的情况。
很明显,性能有了很大的提高。不仅速度快了很多,吞吐率也是直接上升了几倍。当然,这只是非常简单的一个测试,不过总体看来,确实对单机的性能提升有很大的帮助。最最主要的是,同样的并发情况下,CPU 资源也比未开启的状态下低了70%。
配置参考
在 PHP 的官方文档中,已经为我们给出了一套默认的 OPcache 在 php.ini 中的配置。经过测试,基本没什么问题,当然,现在还没有在生产环境中使用过,还需要进行更多的测试。不过文档中指出,这套配置是可以直接运用到线上的,不过需要注意的是某些使用了注解之类功能的高级框架可能需要注意某些参数。
opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
具体的配置说明以及其他的一些配置选项我们可以参考官方文档进行详细的了解。
总结
既然是我们的 PHP 大神鸟哥推荐的,而且也是官方推荐的扩展,我觉得在正式生产环境中使用不会有太大问题。另外,官方也给出了一套可以直接运用于线上生产环境的配置参数,也方便我们直接在线上进行测试。目前在生产环境中,我们只使用了一台服务器来进行测试,并且给它多分配了一些负载过来,从目前的情况来看,这一台机器的运行效率比其他几台的高很多。因为它一方面处理了更多的请求,另一方面它的 CPU 资源占用率还没有其他几台机器高。同时,OPcache 也不需要我们去了解更多的进程协程之类的知识,不像 Swoole 一样的会带来更高的学习成本。所以综上所述,在测试完备的情况下,OPcache 绝对是我们最优先考虑的单机优化方案。
更多编程相关知识,请访问:编程入门!!
Das obige ist der detaillierte Inhalt vonWas ist OPCache? Wie verwende ich OPCache, um die PHP-Leistung zu verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
