Inhaltsverzeichnis
Was ist OPcache?
Opcache installieren
ab-Testeffekt
配置参考
总结
Heim Backend-Entwicklung PHP-Tutorial Was ist OPCache? Wie verwende ich OPCache, um die PHP-Leistung zu verbessern?

Was ist OPCache? Wie verwende ich OPCache, um die PHP-Leistung zu verbessern?

May 07, 2021 pm 06:47 PM
opcache php

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.

Was ist OPCache? Wie verwende ich OPCache, um die PHP-Leistung zu verbessern?

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

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

Außerdem muss es aktiviert werden.

opcache.enable=1
Nach dem Login kopieren

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

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 的情况。

Was ist OPCache? Wie verwende ich OPCache, um die PHP-Leistung zu verbessern?

接下来是开启了 OPcache 的情况。

Was ist OPCache? Wie verwende ich OPCache, um die PHP-Leistung zu verbessern?

很明显,性能有了很大的提高。不仅速度快了很多,吞吐率也是直接上升了几倍。当然,这只是非常简单的一个测试,不过总体看来,确实对单机的性能提升有很大的帮助。最最主要的是,同样的并发情况下,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
Nach dem Login kopieren

具体的配置说明以及其他的一些配置选项我们可以参考官方文档进行详细的了解。

总结

既然是我们的 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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

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

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

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

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

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.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

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

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

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

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

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 PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

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.

See all articles