Heim > Artikel > Backend-Entwicklung > Die Verwendung von Opcache in PHP
Wie wir alle wissen, ist PHP eine interpretierte Sprache und ihre Ausführung kann in die folgenden Prozesse unterteilt werden:
Scannen (Lexing), das PHP-Code in Sprachfragmente umwandelt ( Tokens)
Parsen, Konvertieren von Tokens in einfache und aussagekräftige Ausdrücke
Kompilierung, Kompilieren von Ausdrücken in Opocdes
Ausführung: Führen Sie Opcodes nacheinander nacheinander aus und realisieren Sie so die Funktion eines PHP-Skripts.
In diesem Fall erfordern wiederholte Anfragen nach derselben Datei ein kontinuierliches Parsen, Kompilieren und Ausführen von PHP-Skripten, was zu viele Ressourcen verbraucht.
Traditioneller PHP-Betriebsmodus:
Um dieses Problem zu lösen, wurde die Opcode-Caching-Technologie entwickelt.
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). Beim Opcode-Caching wird der kompilierte Opcode-Code im Speicher zwischengespeichert. Wenn Sie dieses Skript das nächste Mal ausführen, finden Sie den zwischengespeicherten Opcode-Code direkt und führen ihn direkt aus, ohne dass Zwischenschritte erforderlich sind Reduzieren Sie den CPU- und Speicheraufwand.
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). Beim Opcode-Caching wird der kompilierte Opcode-Code im Speicher zwischengespeichert. Wenn Sie dieses Skript das nächste Mal ausführen, finden Sie den zwischengespeicherten Opcode-Code direkt und führen ihn direkt aus, ohne dass Zwischenschritte erforderlich sind Reduzieren Sie den CPU- und Speicheraufwand.
opcache ist ein Opcode-Caching-Tool.
Der größte Unterschied zwischen Opcache und anderen Caching-Tools, der auch als Vorteil bezeichnet werden kann, besteht darin, dass es in den PHP-Quellcodebaum aufgenommen wurde und ein offizielles Produkt ist. Es wird immer mit PHP aktualisiert. Während die anderen seit langem nicht aktualisiert wurden, werden neue Versionen von PHP nicht unterstützt oder weisen eine schlechte Kompatibilität auf. Zweitens ist Opcache nach dem Testen auch effizienter als andere Tools.
Wie aktiviert man Opcache?
Da opcahce nun als integriertes Tool in den PHP-Quellbaum eingefügt wurde, muss es sehr einfach zu öffnen sein. Die folgende Konfiguration wird empfohlen:
zend_extension=.././...php_opcache.dll(路径) opcache.memory_consumption=128 #共享内存opcache.interned_strings_buffer=8 #存储临时字符串opcache.max_accelerated_files=4000 #缓存文件数opcache.revalidate_freq=60 #缓存时间opcache.fast_shutdown=1opcache.enable_cli=1 opcache.enable=1 #是否开启opcode缓存
Sie brauchen nur das Vorherige entfernen; Das ist es.
Opcache hat natürlich viele Konfigurationen, daher werde ich sie hier nicht alle auflisten. Die oben genannten sind Standardkonfigurationen und können allgemeine Anforderungen erfüllen.
Theoretisch gilt: Je größer die PHP-Datei und je komplexer die Logik, desto offensichtlicher wird der Effekt von Opcache sein und er wird eine große Rolle in Bezug auf Geschwindigkeit und Anti-Parallelität spielen.
Die Testergebnisse in der lokalen Umgebung sind wie folgt (Computerleistung ist begrenzt):
Servertest:
Es gibt eine deutliche Effizienzsteigerung.
Da der Opcache den zum ersten Mal ausgeführten Opcode in der Datei zwischenspeichert, sollte er nicht in der Testumgebung geöffnet werden. Der Grund dafür ist, dass Sie den Code kennen wird während der Entwicklung geändert, aber das Ergebnis ist anders Der Opcache ist online konfiguriert und muss gelöscht werden. Sie können diese Funktion verwenden.
Nachdruck von: http://qqfe.org/archives/240?utm_source=tuicool&utm_medium=referral
众所周知php是一种解释型语言,它的执行可分为如下几个流程:
Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
Parsing, 将Tokens转换成简单而有意义的表达式
Compilation, 将表达式编译成Opocdes
Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。
这样一来的话,对于同一个文件,反复请求,就要不断解析、编译和执行PHP脚本,消耗过多资源。
php传统运行方式:
为了解决这个问题,opcode缓存技术应运而生。
当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode 缓存就是将编译好的Opcode码缓存在内存中,下次再执行这个脚本时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了,其目地是避免重复编译,减少 CPU 和内存开销。
当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode 缓存就是将编译好的Opcode码缓存在内存中,下次再执行这个脚本时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了,其目地是避免重复编译,减少 CPU 和内存开销。
opcache就是一种opcode缓存工具。
Opcache其他的缓存工具最大的不同,也可以说是优势,就是它已经进入php源码树,成为官方产品,会一直跟着php更新,而其他的已经很久不更新了,目前对于新版的php都不支持或者兼容性很差。其次,经过测试,opcache的效率也比其他工具高。
那么如何开启使用opcache呢?
既然opcahce已经进入php源码树,那么作为内置的工具,开启方式肯定很简单了,下面便是推荐配置:
zend_extension=.././...php_opcache.dll(路径) opcache.memory_consumption=128 #共享内存opcache.interned_strings_buffer=8 #存储临时字符串opcache.max_accelerated_files=4000 #缓存文件数opcache.revalidate_freq=60 #缓存时间opcache.fast_shutdown=1opcache.enable_cli=1 opcache.enable=1 #是否开启opcode缓存
你只需要将前面的;去掉就可以了。
当然opcache有很多配置,这里就不一一列举,上面这几条是标配,可以满足一般需求。
理论上讲,php文件越大,逻辑越复杂,那么opcache的效果就越明显,而且在速度和抗并发上有非常大的作用。
在本地环境测试结果如下(电脑性能有限):
服务器测试:
有明显的效率提升。
需要注意到是,opcache既然会缓存住文件第一次执行的opcode,那么在测试环境就不要开了,原因你懂得,开发时代码改来改去,结果却不变………..
要手动清除opcache缓存,需要运行opcache_reset()来清除,所以线上如果配置了opcache,需要清除的话可以用这个函数。
Das obige ist der detaillierte Inhalt vonDie Verwendung von Opcache in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!