Heim >Backend-Entwicklung >PHP-Tutorial >Beschleunigung der PHP Opcache-Optimierung

Beschleunigung der PHP Opcache-Optimierung

小云云
小云云Original
2018-03-27 11:53:381608Durchsuche

Opcache ist eine Methode, die den Aufwand für das Laden und Parsen von PHP-Skripten jedes Mal vermeidet, indem der vorkompilierte Bytecode des analysierten PHP-Skripts im gemeinsam genutzten Speicher gespeichert wird. Dadurch kann der Parser die zwischengespeicherten Bytes direkt aus dem gemeinsam genutzten Speicher lesen Verbesserung der Ausführungseffizienz von PHP. PS: Es muss vom Xcache-Mechanismus unterschieden werden und seine Verwendung wird in der folgenden Zusammenfassung vorgestellt.

· Anleitung zur Installation

· Anleitung zur Konfiguration

· Anleitung zur Verwendung

· Anzeigeanalyse

· Wichtige Hinweise

1. So installieren Sie

In PHP 5.5.0 und nachfolgenden Versionen ist die Opcache-Funktion in Form einer Erweiterungsbibliothek nicht standardmäßig aktiviert , und Entwickler müssen PHP verwenden. Fügen Sie einfach die Opcache-bezogene Konfiguration in ini hinzu oder entkommentieren Sie sie. Für ältere Versionen kann Opcache als PECL-Erweiterungsbibliothek installiert und konfiguriert werden.

HINWEIS:

Wenn Sie den Parameter --disable-all verwenden, um den Build der Standarderweiterung zu deaktivieren, müssen Sie die Option --enable-opcache verwenden, um Opcache zu aktivieren.

2. So konfigurieren Sie

php.ini:

[opcache]

; Opcode-Caching aktivieren

opcache.enable= 1

; Der Opcode-Cache für die PHP-unterstützende CLI-Version wird im Allgemeinen zum Testen und Debuggen verwendet

opcache.enable_cli=1

; Größe des gemeinsam genutzten Speichers

opcache.memory_consumption=128

; Speichert die temporäre String-Cache-Größe in MB.

opcache.interned_strings_buffer=8

; maximale Grenze für die Anzahl der zwischengespeicherten Dateien, die Trefferquote beträgt weniger als 100 %, Sie können versuchen, diesen Wert zu erhöhen

opcache.max_accelerated_files=4000

; Überprüfen Sie die Änderungszeit der Datei Innerhalb eines bestimmten Zeitraums legen Sie hier den Zeitraum der Prüfung fest. Der Standardwert ist 2, die Einheit ist Sekunden

opcache.revalidate_freq=60

; Aktivieren Sie den Schnellstopp der Fortsetzung Ereignisse, die sich auf das Speicherverwaltungsmodul der Zend-Engine verlassen, geben den Speicher aller Anforderungsvariablen einmal frei, anstatt Speicherblöcke nacheinander freizugeben

opcache.fast_shutdown=1

; Aktivieren Sie die Überprüfungsfunktion Die Existenz und Lesbarkeit von PHP-Skripten wird unabhängig davon, ob die Datei zwischengespeichert wurde, durch den Opcode-Cache überprüft, was die Leistung verbessern kann. Aber wenn deaktiviert Bei der Option opcache.validate_timestamps besteht möglicherweise das Risiko, dass veraltete Daten zurückgegeben werden.

opcache.enable_file_override=1

; Erweiterungsbibliothek, also dateibezogenes Laden

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts -20131226/opcache.so

HINWEIS:

Die oben aufgeführten Konfigurationselemente sind häufig verwendete und wichtige Konfigurationselemente, aber es gibt tatsächlich mehr als nur diese Konfigurationselemente.

3. Verwendung von Opcache: Tatsächlich spiegelt sich die Verwendung von Opcache in den verschiedenen Funktionen wider, die es bietet:

1 Format: Array opcache_get_configuration(void);

Rufen Sie die eingestellten Cache-Konfigurationsinformationen ab und geben Sie die Konfigurationsinformationen, die Blacklist und die Versionsnummer in Form eines Arrays zurück.

2. opcache_get_status;

Formular: array opcache_get_status(void);

Informationen zum eingestellten Cache-Status abrufen.

3. opcache_invalidate;

Form: boolean opcache_invalidate (string);

Die Funktion dieser Funktion besteht darin, den Bytecode-Cache des angegebenen Skripts ungültig zu machen. Wenn

force

nicht gesetzt ist oder

FALSE

übergeben wird, ist der Cache des Skripts nur dann ungültig, wenn die Änderungszeit des Skripts neuer als die entsprechende Bytecode-Zeit ist. 4. opcache_reset;Form: boolean opcache_reset(void);

Diese Funktion setzt den gesamten Bytecode-Cache zurück. Nach dem Aufruf von opcache_reset() werden alle Skripte beim nächsten Klick neu geladen und geparst.

5. opcache_compile_file;

Form: boolean opcache_compile_file (string);

Sie können das Skript kompilieren und zwischenspeichern, ohne es auszuführen.

6. opcache_is_script_cached

Form: boolean opcache_is_script_cached (string);

Bestimmen Sie, ob ein Skript im Opcache zwischengespeichert wurde.

Im Folgenden werde ich ein PHP-Skript schreiben, das die oben genannten Funktionen kapselt, was in Zukunft auch die Wartung und Verwaltung von Opcache erleichtern wird:

<?php
/**
 * 这个文件是对opcache优化器的几个
 * 函数的封装,作为一个工具脚本使用
 */
if(!extension_loaded("ZendOpcache")) {
      echo "You do nothave the Zend OPcache extension loaded , please open it up,then retry!";
}
/**
 * 函数操作封装类
 * 数组形式的结果,会转为json格式返回,不做显示上的处理
 * 这里主要处理的是影响Opcache缓存状态的操作,对于查看
 * Opcache各项指标的处理,可查看项目:opcache-status
 */
class OpcacheScriptModel{
      private $_configuration;
      private $_status;
      function __construct() {
            $this->_configuration =opcache_get_configuration();
            $this->_status =opcache_get_status();
      }
      // 获取配置信息
      public function getConfigDatas(){
            echo json_encode($this->_configuration);
      }
      // 获取状态信息
      public function getStatusDatas(){
            echo json_encode($this->_status);
      }
      // 指定某脚本文件字节码缓存失效
      public function invalidate($script){
            return opcache_invalidate($script);
      }
      // 重置或清除整个字节码缓存数据
      public function reset() {
            return opcache_reset();
      }
      // 无需运行,就可以编译并缓存脚本
      public function compile($file){
            return opcache_compile_file($file);
      }
      // 判断某个脚本是否已经缓存到Opcache
      public function isCached($script){
            return opcache_is_script_cached($script);
      }
}
// 获得对象
function getOpcacheDataModel(){
      // 初始化对象
      $dataModel = NULL;
      if(NULL ==$dataModel) {
            $dataModel = new OpcacheScriptModel();
      }
      return $dataModel;
}
?>

Vergleich von Die oben genannten Skripttools sind einfach und können im Allgemeinen in einem Projekt platziert oder als separates Tool verwendet werden. Bei Bedarf kann die folgende Anzeige und Analyse von Open-Source-Projekten auch die oben genannte API-Funktion verwenden Die erhaltenen Daten werden in grafischer Form angezeigt. Dies ist intuitiver. Bitte lesen Sie weiter.

4. Anzeigeanalyse

Wir wissen, dass der Ausführungsmechanismus von PHP-Skripten darin besteht, dass der Parser die PHP-Skriptdatei analysiert und in Bytecode-Daten zerlegt, und dass die Rolle des Opcache-Optimierers das Zwischenspeichern ist Die analysierten Bytecode-Daten können direkt aus dem Cache gelesen werden, ohne dass das Laden und Parsen des PHP-Skripts jedes Mal wiederholt werden muss. Daher müssen wir für die Verwendung von Opcache im Allgemeinen nur zwei Dinge tun:

1 Opcache-Optimierer zur Beschleunigung der Ausführung von PHP-Programmen;

2. Verstehen Sie den Leistungsstatus des aktuellen PHP-Programms in Echtzeit durch verschiedene Indikatoren und Parameter von Opcache Den aktuellen Opcache-Beschleunigungseffekt anzeigen und analysieren? Die Antwort besteht darin, das Open-Source-Projekt auf Github zu verwenden: https://github.com/rlerdorf/opcache-status

Legen Sie das heruntergeladene Projekt in das Stammverzeichnis des aktuellen Webservers und greifen Sie direkt darauf zu. Schauen Sie Zuerst beim Effekt:


Wie aus den Screenshots und Projektdateien oben ersichtlich ist, handelt es sich beim Opcache-Tool um eine vereinfachte GUI-Version. Verwendung Es kann den folgenden Inhalt klar verstehen und analysieren:

1. Cache-Nutzung, verbleibender Speicherverbrauch und Anteil

2 🎜>3. Anzahl der Cache-Hits und -Misses;

4. Cache-Skriptdateien, aufgeteilt und intuitiv in Form von Ansichten angezeigt;

Okay, das war's mit der Visualisierung von Opcache. Schauen wir uns ein paar Punkte an, die es zu beachten gilt.

5. Hinweise

1. Es wird nicht empfohlen, die PHP-Optimierung für Xcache und Opcache gleichzeitig zu aktivieren.

Da PHP 5.5.0 und nachfolgende Versionen erstellt wurden -in-Unterstützung für Opcache. Daher ist PHP sich seiner Bedeutung bewusst. Im Vergleich zu PHP-Optimierern von Drittanbietern wie Xcache ist die Verwendung von Opcache die bessere Wahl. Wenn beide gleichzeitig vorhanden sind, wird außerdem die Anzahl der Cache-Treffer von Opcache erheblich reduziert und es entsteht unnötiger Overhead.

2. Es wird nicht empfohlen, Opcache während des Entwicklungsprozesses zu aktivieren

Der Grund dafür ist offensichtlich, dass der vom Entwickler geänderte Inhalt nicht angezeigt wird und nicht sofort wirksam wird Da es von opcache.revalidate_freq=60 betroffen ist, wird empfohlen, Opcache beim Testen der Leistung nach der Entwicklung und dem Test zu aktivieren. Natürlich muss Opcache in der Produktionsumgebung immer aktiviert sein.

3. Es wird nicht empfohlen, die Opcache-Indikatoren zu groß einzustellen

Die Konfigurationsgröße jedes Opcache-Indikators oder ob er aktiviert werden muss, muss mit den tatsächlichen Anforderungen des Projekts kombiniert werden Die vom Opcache-Beamten empfohlene Konfiguration und die tatsächliche Situation des Projekts müssen analysiert werden. Dies kann mit der Analyse und Anpassung der visuellen Cache-Informationen in Teil 4 oben kombiniert werden.

4. Es wird nicht empfohlen, die alte Version von Opcache über einen längeren Zeitraum zu verwenden.

Es wird empfohlen, rechtzeitig die offizielle Website von Opcache zu besuchen, um sich über die Fehlerbehebungen zu informieren. Funktionsoptimierungen und neue Funktionen in Echtzeit, um diese besser in Ihren eigenen Projekten anwenden zu können.

5. Es wird nicht empfohlen, das oben vorgestellte Open-Source-Projekt im Stammverzeichnis des Webdienstes in einer Produktionsumgebung abzulegen.

Der Grund ist sehr einfach, da dieses Open-Source-Projekt nicht über dies verfügt Zugriffsbeschränkungen und SicherheitsverarbeitungDas heißt, jeder Benutzer, der auf das externe Netzwerk zugreifen kann, kann direkt darauf zugreifen, solange er die Zugriffsadresse kennt, sodass es nicht sicher ist. Im Allgemeinen hilft dieses Open-Source-Tool nur bei der visuellen Analyse der Leistung von PHP und wird normalerweise während der Entwicklungs- und Debugging-Phase verwendet. Wenn Sie es nur in einer Produktionsumgebung aktivieren möchten, müssen Sie Sicherheitsbeschränkungen vornehmen.

Verwandte Empfehlungen:

Teilen Sie mit, wie Sie die Opcache-Beschleunigung in PHP verwenden

Die Verwendung von Opcache in PHP

Zusammenfassung der Verwendung von Opcache zur PHP-Optimierung und -Beschleunigung

Das obige ist der detaillierte Inhalt vonBeschleunigung der PHP Opcache-Optimierung. 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