Heim >Backend-Entwicklung >PHP7 >So installieren und konfigurieren Sie ZendOpcache
Zend, das Unternehmen hinter dem PHP-Entwicklungsteam, hat kürzlich sein PHP-Beschleunigungsprodukt Zend Optimizer als Open Source bereitgestellt. Das neue Projekt wird auf Github gehostet und der Projektname ist ZendOptimizerPlus. Heute werden wir über ZendOpcache sprechen.
Einführung
Zend Optimizer + beschleunigt die PHP-Ausführung durch Zwischenspeichern und Optimieren von Opcodes. Dieser Vorgang macht das Lesen von der Festplatte überflüssig PHP-Dateien und anschließendes Kompilieren bietet auch einen kleinen Bytecode-Optimierungsmodus, um die Codeausführung zu beschleunigen.
Anwendbarkeit
Die aktuelle Version von Zend Optimizer + ist für PHP 5.2.*, 5.3 geeignet. *, 5.4.* und der PHP-5.5-Entwicklungsversionszweig werden möglicherweise in Zukunft entfernt 7.0 .1 Beta-Version, herunterladen und entpacken, kompilieren:
http://pecl.php.net/package/ZendOpcache
KonfigurationPhp.ini bearbeiten
wget http://pecl.php.net/get/zendopcache-7.0.1.tgz tar xzf zendopcache-7.0.1.tgz cd zendopcache-7.0.1 phpize ./configure --with-php-config=/path_to_php_bin/php-config make make install
Starten Sie Ihr PHP-CGI oder Apache neu.
Detaillierte Erklärung der Konfigurationsparameteropcache.enable
(Standardwert: 1)Zend Optimizer + Schalter, der Code wird beim Ausschalten nicht mehr optimiert.
opcache.memory_consumption(Standardwert: 64)
Zend Optimizer + Shared-Memory-Größe, wie viele Voreinstellungen kann im gesamten kompilierten PHP-Code gespeichert werden (Einheit: MB).
(Standardwert: 2000)Zend Optimizer + die maximale Anzahl von Schlüsseln in der Hash-Tabelle (eine Skriptdatei sollte einem Schlüssel entsprechen, daher sollte es die maximale Anzahl von Dateien sein, die zwischengespeichert werden dürfen ). Dieser Wert ist tatsächlich die erste Zahl in der Primzahlenliste {223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987}, die größer als der eingestellte Wert ist – 100000
Wenn der „verschwendete“ Speicher den diesem Wert entsprechenden Prozentsatz erreicht, wird ein Neustartplan initiiert. Standardwert: 1)
Wenn Sie diesen Befehl aktivieren, hängt Zend Optimizer + automatisch den Namen des aktuellen Arbeitsverzeichnisses an den Skriptschlüssel an, um Schlüsselwert-Benennungskonflikte zwischen Dateien mit demselben Namen zu vermeiden. Dies führt jedoch zu Schäden an vorhandenen Anwendungen Kontrollen werden durch die Direktive „opcache.revalidate_freq“ bestimmt.opcache.revalidate_freq(Standard: 2)
Wie oft (in Sekunden) der Dateizeitstempel überprüft werden soll, um die Zuweisung des gemeinsam genutzten Speichers zu ändern. 1“ bedeutet einmal pro Sekunde überprüfen, ist aber einmal pro Anfrage. „0“ bedeutet immer überprüfen ist deaktiviert und die zwischengespeicherte Datei kann im selben Include-Pfad gefunden werden, und die Dateisuche wird nicht fortgesetzt, wenn sich an anderer Stelle im Include-Pfad eine Datei mit demselben Namen befindet Auswirkungen auf Ihre Anwendung. Standardmäßig sollte die Anweisung deaktiviert sein, was bedeutet, dass die Optimierung aktiv ist. (Standard: 1) Wenn deaktiviert, werden alle Dokumente kommentiert werden aus dem Code entfernt, um die Größe des optimierten Codes zu reduzieren. Das Deaktivieren von „Dokumentationskommentaren“ kann dazu führen, dass einige vorhandene Anwendungen und Frameworks beschädigt werden (z. B. Doctrine, ZF2, PHPUnit) (Standard: 1).
opcache.fast_shutdown
(Standard: 0)
opcache.enable_file_override
(Standard: 0)
opcache.optimization_level
(Standard: 0xffffffff)
opcache.inherited_hack
(Standard: 1)Durch die Aktivierung dieses Hacks kann der Fehler „Klasse kann nicht neu deklariert werden“ vorübergehend behoben werden. In Zend Optimizer + werden DECLARE_CLASS-Opcodes mithilfe der Vererbung gespeichert (dies sind die einzigen Opcodes, die von PHP ausgeführt werden können, sie können jedoch auch durch Optimierung verursacht werden). Die Klasse kann nicht gefunden und nicht ausgeführt werden. Wenn die Datei gelesen wird, versucht der Optimierer, die geerbte Klasse über die aktuelle Umgebung zu binden. Das Problem dabei ist, dass der Opcode DECLARE_CLASS möglicherweise nicht vom aktuellen Skript benötigt wird script Der Opcode ist mindestens erforderlich, um den Klassendefinitionsvorgang abzuschließen. Dieser Befehl ist standardmäßig deaktiviert, was bedeutet, dass die Optimierung in PHP 5.3 und höher und dieser Einstellung nicht mehr erforderlich ist Es wird nicht wirksam.
opcache.dups_fix(Standard: 0)
Durch die Aktivierung dieses Hacks kann der Fehler „Klasse kann nicht erneut deklariert werden“ vorübergehend behoben werden.
opcache.blacklist_filename(Standardwert : Keine)
Zend Optimizer + Der Speicherort der Blacklist-Datei
Zend Optimizer + Die Blacklist ist eine Textdatei, die die Namen von Dateien enthält, die nicht beschleunigt werden können. Der Dateiname muss sein ein vollständiger Pfad oder ein Dateipräfix (zum Beispiel: /var/www/x blockiert alle Dateien oder Verzeichnisse, die in den /var/www-Dateien und -Verzeichnissen mit „x“ beginnen. Dateien, die blockiert werden müssen, erfüllen normalerweise die folgenden drei Gründe). Einer von:
1) Das Verzeichnis enthält automatisch generierten Code, wie z. B. Smarty oder ZFW-Cache.
2) Der Code läuft bei der Beschleunigung nicht gut, wodurch die Auswertung zur Kompilierungszeit verzögert wird.
3) Der Code löst einen Zend Optimizer + aus Fehler: opcache.max_file_size (Standard: 0)
opcache.error_log
(Standard: Keine)
opcache.log_verbosity_level
(Standard: 1)Verhindern Sie, dass während der Skriptausführung versehentlich auf den gemeinsamen Speicher geschrieben wird, nur für internes Debuggen.
Zuordnungsbasis für gemeinsam genutzte Speichersegmente (nur Windows Alle). PHP-Prozesse müssen demselben gemeinsam genutzten Speicheradressraum zugeordnet werden. Diese Anweisung wird verwendet, um Fehler „Erneutes Anhängen an Basisadresse nicht möglich“ manuell zu beheben.
Empfohlenes Lernen:Das obige ist der detaillierte Inhalt vonSo installieren und konfigurieren Sie ZendOpcache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!