Was ist Opcache in PHP? Einführung in die Prinzipien und Verwendung von Opcache

不言
Freigeben: 2023-04-04 13:22:01
nach vorne
15295 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Frage: Was ist Opcache in PHP? Die Einführung in das Prinzip und die Verwendung von Opcache hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

1. Persönliche Praxis hat Opcache gefunden

Um die Auswirkungen des hohen Datenverkehrs während Double Eleven zu bewältigen, hat der Herausgeber kürzlich einen Stresstest durchgeführt, um die Serverleistung zu ermitteln Engpässe und festgestellt, dass 100 Parallelität Zu diesem Zeitpunkt waren die QPS
nicht sehr hoch, aber der CPU- und Speicherverbrauch war extrem hoch, insbesondere der CPU-Verbrauch betrug 100 %, und unsere Container- und Serverkonfigurationen wurden fast auf den höchsten Stand gebracht Dies ist nicht das, was ein so guter Server bewirken sollte, daher hat der Herausgeber eine umfassende Untersuchung durchgeführt:

Dieser Teil der Schnittstelle wird zwischengespeichert ist nicht sehr hoch. Dadurch werden die Faktoren eliminiert, die die Leistung der Datenbank und des Caches beeinträchtigen. ;

Überprüfen Sie, ob es andere externe Aufrufe gibt, die die Leistung beeinträchtigen Wird nur über die Datenbank und den Cache abgerufen und ist daher ausgeschlossen.

3. Überprüfen Sie, ob im Schnittstellenprogrammcode komplexe Probleme vorliegen. Nach logischer Berechnung wurde festgestellt, dass die in diesem Teil verarbeiteten Daten zwischengespeichert wurden Direkt nach der Verarbeitung war die Datenquelle für einen bestimmten Zeitraum der Redis-Cache, daher wurde sie ausgeschlossen. 4. Da es installiert wurde, wurden die möglichen Schnittstellenengpässe beseitigt Das derzeit verwendete Laravel5.0-Framework führt zu einer derart geringen Schnittstellenleistung. Anschließend wird anhand der Framework-Dokumente, des Quellcodes und der Online-Materialien festgestellt, dass das Laravel-Framework zur Laufzeit eine große Anzahl von Framework-Dateien lädt und diese Dateien dann kompiliert Der CPU-Verbrauch des Servers ist extrem hoch. Auf diese Weise entdeckte der Herausgeber opcache, eine gute PHP-Erweiterung zum Zwischenspeichern von PHP-kompilierten Dateien.

2. Das Prinzip von Opcache

1.

Opcache ist eine Methode, die den Aufwand für das Laden und Parsen von PHP-Skripten jedes Mal vermeidet, indem der vorkompilierte Bytecode (Operate Code) des analysierten PHP-Skripts im gemeinsam genutzten Speicher gespeichert wird. Der Parser kann direkt aus dem gemeinsam genutzten Speicher lesen zwischengespeicherten Bytecode (Operate Code), wodurch die Effizienz der PHP-Ausführung erheblich verbessert wird.


2. Was ist Operate-Code?

Wenn der Interpreter die Analyse des Skriptcodes abschließt, generiert er Zwischencode, der direkt ausgeführt werden kann, auch bekannt als Opcode (Operate Code, Opcode). Der Zweck des Opcode-Cache besteht darin, wiederholte Kompilierungen zu vermeiden und den CPU- und Speicheraufwand zu reduzieren. Wenn der Leistungsengpass dynamischer Inhalte nicht in der CPU und im Speicher liegt, sondern in I/O-Vorgängen, wie z. B. dem durch Datenbankabfragen verursachten Festplatten-I/O-Overhead, ist die Leistungsverbesserung des Opcode-Caches sehr begrenzt. Da der Opcode-Cache jedoch den CPU- und Speicheraufwand reduzieren kann, ist dies immer eine gute Sache. Moderne Opcode-Caches (Optimizer+, APC2.0+ und andere) nutzen Shared Memory zur Speicherung und können Dateien direkt daraus ausführen, ohne dass der Code vor der Ausführung „deserialisiert“ werden muss. Dies führt zu erheblichen Leistungssteigerungen, häufig zu einem geringeren Gesamtspeicherverbrauch des Servers, insbesondere bei hohem Datenverkehr und hoher Parallelität, und hat nur wenige Nachteile.


3. Warum Opcode-Cache verwenden?

Dies beginnt mit dem Lebenszyklus des PHP-Codes. Bei der Anforderung eines PHP-Skripts werden fünf Schritte durchlaufen, wie in der folgenden Abbildung dargestellt:


Was ist Opcache in PHP? Einführung in die Prinzipien und Verwendung von OpcacheDie Zend-Engine muss eine Datei aus dem Dateisystem lesen, ihr Wörterbuch und ihre Ausdrücke scannen, die Datei analysieren, Computercode zur Ausführung erstellen (Opcode genannt) und schließlich den Opcode ausführen . Jedes Mal, wenn ein PHP-Skript angefordert wird, werden die oben genannten Schritte einmal ausgeführt. Wenn sich der PHP-Quellcode nicht ändert, muss der Opcode nicht jedes Mal neu generiert werden Mechanismus im Web können wir den Opcode zwischenspeichern. Wäre es in Zukunft nicht schneller, direkt auf den zwischengespeicherten Opcode zuzugreifen? >


Daher wird der PHP-Code direkt nach dem Zwischenspeichern des Operate-Codes abgerufen und direkt ausgeführt. Die drei Zwischenschritte werden weggelassen, wodurch der PHP-Code erheblich verbessert wird Ausführungseffizienz

Was ist Opcache in PHP? Einführung in die Prinzipien und Verwendung von Opcache 3. Installation und Verwendung von Opcache


1. Installieren Sie

当你的PHP版本低于7.0时,你可以去http://pecl.php.net/package/ZendOpcache 根据自己的PHP版
本下载相应的opcache版本。比如PHP5.5:http://pecl.php.net/get/zendopcache-7.0.5.tgz
tar -zxvf zendopcache-7.0.5.tgz
cd zendopcache-7.0.5
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
这是会在php的扩展文件夹内生成opcache.so
PHP7.0之后自带opcache.so无需安装
Nach dem Login kopieren

2. Verwenden Sie

 在php.ini加入zend_extension=opcache.so;
 注意:这里是zend_extension不是extension,关于zend_extension和extension的区别可以去查阅
 相关资料
Nach dem Login kopieren
3. Konfigurieren Sie

关于opcache的详细参数配置比较核心的参数如下:
opcache扩展位置
zend_extension=opcache.so
启用opcache
opcache.enable=1
使用共享内存大小
opcache.memory_consumption=200
字符串缓存大小
opcache.interned_strings_buffer=8
最大缓存文件数量
opcache.max_accelerated_files=8000
出现异常,立即释放全部内存
opcache.fast_shutdown=1
最大允许占用内存百分比,超过此限制会重启进程
opcache.max_wasted_percentage=20
如果置为1,则将当前路径加入到文件key中,以避免可能产生的同文件名的文件key冲突
opcache.use_cwd=1
文件检测周期
revalidate_freq=3600
启用文件缓存时间戳
opcache.validate_timestamps=1
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist Opcache in PHP? Einführung in die Prinzipien und Verwendung von Opcache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage