Heim > Backend-Entwicklung > PHP7 > Tipps zur Verbesserung der PHP7-Leistung mithilfe der OPcache-Erweiterung

Tipps zur Verbesserung der PHP7-Leistung mithilfe der OPcache-Erweiterung

coldplay.xixi
Freigeben: 2023-02-17 19:46:01
nach vorne
2663 Leute haben es durchsucht

Tipps zur Verbesserung der PHP7-Leistung mithilfe der OPcache-Erweiterung

Empfohlen (kostenlos): PHP7

Egal wo ich bin, ich werde Ihnen sofort antworten, wenn ich die E-Mail sehe. Meine E-Mail: echo "YUBzYW1lZ28uY29tCg==" |. base64 -d
Vorwort
Es ist halb elf, es ist Zeit, sich niederzulassen.

Wenn PHP läuft, gibt es einen solchen Prozess. Der PHP-Code wird zunächst vorkompiliert, der Bytecode wird generiert und dann in den Speicher geladen. Schließlich führt die CPU das kompilierte Bytecode-Fragment im Speicher aus. Wir werden feststellen, dass wir bei der Ausführung eines PHP-Programms jedes Mal einen solchen Prozess durchlaufen. Ja, es ist leicht zu denken: Warum nicht der C++-Sprache folgen und den Quellcode in eine Datei kompilieren? kann direkt in den Speicher geladen werden, also Wo ist Bruder? Äh-huh?. Holen Sie Ihr Gewehr heraus und laden Sie diesen OPcache. Seit der Veröffentlichung von PHP5.5.0 ist diese Zend-Erweiterung integriert. OPcache。自从PHP5.5.0出来后,就内置此zend扩展了。


What is OPcache
OPcache是PHP中的Zend扩展,可以大大提升PHP的性能。
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。


Judge whether it has been extended OPcache

➜  ~ php -m | grep OPcache
Zend OPcache
Zend OPcache
Nach dem Login kopieren

倘若没有开启的话,可以在php.ini配置中开启
/home/samego/service/php7.2/php.ini

➜  ~ echo zend_extension="opcache.so" >> /home/samego/service/php7.2/php.ini
Nach dem Login kopieren

About OPcache configure
接下来,我们需要在 PHP 的配置文件中启用 OPcache(默认是关闭的):

opcache.enable=1
Nach dem Login kopieren

下面我们继续对 OPcache 进行一些优化配置:

opcache.memory_consumption=512
Nach dem Login kopieren

这个配置表示你想要分配给 OPcache 的内存空间(单位:MB),设置一个大于 64 的值即可。

opcache.interned_strings_buffer=64
Nach dem Login kopieren

这个配置表示你想要分配给实际字符串的空间(单位:MB),设置一个大于 16 的值即可。

opcache.max_accelerated_files=32531
Nach dem Login kopieren

这个配置表示可以缓存多少个脚本,将这个值尽可能设置为与项目包含的脚本数接近(或更大)。

opcache.validate_timestamps=0
Nach dem Login kopieren

改配置值用于重新验证脚本,如果设置为 0(性能最佳),需要手动在每次 PHP 代码更改后手动清除 OPcache。如果你不想要手动清除,可以将其设置为 1 并通过 opcache.revalidate_freq 配置重新验证间隔,这可能会消耗一些性能,因为需要每隔 x 秒检查更改。

opcache.save_comments=1
Nach dem Login kopieren

这个配置会在脚本中保留注释,我推荐开启该选项,因为一些库依赖于这个配置,并且我也找不出什么关闭它的好处。

opcache.fast_shutdown=0
Nach dem Login kopieren

快速关闭会给一个更快速清理内存的机制,不过,在我的基准测试中,更慢一些,可能这会应用带来一些性能提升,但是你需要自己去尝试。

所以,最终的配置优化长这样:

opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.fast_shutdown=0
Nach dem Login kopieren

你可以使用这些配置值进行实验,具体配置值取决于你的应用大小和服务器配置。
学习于Laravel社区


Laravel OPcache

  • install

    ➜  ~ composer require appstract/laravel-opcache
    Nach dem Login kopieren
  • configure

    ➜  ~ php artisan vendor:publish --provider="Appstract\Opcache\OpcacheServiceProvider" --tag="config"
    Nach dem Login kopieren
  • command

# Clear OPcache:
➜  ~ php artisan opcache:clear

# Show OPcache config:
➜  ~ php artisan opcache:config

# Show OPcache status:
➜  ~ php artisan opcache:status

# Pre-compile your application code:
➜  ~ php artisan opcache:optimize
Nach dem Login kopieren

拭目以待的场景测试

个人比较喜欢数据说话
场景:(1)请求GET接口 (2)测试次数10  (3)并发数为100

case non-extension

1000个请求,花费32.32秒,每秒30.94个请求

Transactions:               1000 hits
Availability:             100.00 %
Elapsed time:              32.32 secs
Data transferred:           0.97 MB
Response time:              0.32 secs
Transaction rate:          30.94 trans/sec
Throughput:             0.03 MB/sec
Concurrency:                9.96
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            0.44
Shortest transaction:           0.11
Nach dem Login kopieren

case had extend


Was ist OPcache?

OPcache ist eine Zend-Erweiterung in PHP, die die Leistung von PHP erheblich verbessern kann.

OPcache verbessert die Leistung von PHP, indem es den vorkompilierten Bytecode von PHP-Skripten im gemeinsam genutzten Speicher speichert. Der Vorteil der Speicherung von vorkompiliertem Bytecode besteht darin, dass der Aufwand für das Laden und Parsen von PHP-Skripten jedes Mal eingespart wird.


Beurteilen Sie, ob der OPcache erweitert wurde

Transactions:               1000 hits
Availability:             100.00 %
Elapsed time:               2.94 secs
Data transferred:           0.97 MB
Response time:              0.03 secs
Transaction rate:         340.14 trans/sec
Throughput:             0.33 MB/sec
Concurrency:                9.86
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            0.29
Shortest transaction:           0.01
Nach dem Login kopieren
🎜Wenn er nicht aktiviert ist, können Sie ihn in der php.ini-Konfiguration aktivieren🎜/home/samego/service/php7.2/php.ini 🎜rrreee🎜🎜🎜Über die OPcache-Konfiguration🎜🎜Als nächstes müssen wir OPcache in der PHP-Konfigurationsdatei aktivieren (standardmäßig geschlossen): 🎜rrreee🎜 Als nächstes nehmen wir weiterhin einige Optimierungskonfigurationen für OPcache vor: 🎜rrreee🎜 Diese Konfiguration bedeutet: Der Speicherplatz (Einheit: MB), den Sie OPcache zuweisen möchten, legen Sie einfach einen Wert größer als 64 fest. 🎜rrreee🎜Diese Konfiguration gibt den Speicherplatz (Einheit: MB) an, den Sie der tatsächlichen Zeichenfolge zuweisen möchten. Legen Sie einfach einen Wert größer als 16 fest. 🎜rrreee🎜Diese Konfiguration gibt an, wie viele Skripte zwischengespeichert werden können. Stellen Sie diesen Wert so nah wie möglich an (oder größer als) der Anzahl der im Projekt enthaltenen Skripte ein. 🎜rrreee🎜Ändern Sie den Konfigurationswert für Revalidierungsskripte. Wenn er auf 0 (beste Leistung) eingestellt ist, müssen Sie den OPcache nach jeder Änderung des PHP-Codes manuell löschen. Wenn Sie keine manuelle Bereinigung wünschen, können Sie den Wert auf 1 setzen und das Revalidierungsintervall über opcache.revalidate_freq konfigurieren, was möglicherweise etwas Leistung kostet, da Änderungen alle x Sekunden überprüft werden müssen. 🎜rrreee🎜Diese Konfiguration behält Kommentare im Skript bei. Ich empfehle, diese Option zu aktivieren, da einige Bibliotheken von dieser Konfiguration abhängen und ich keinen Vorteil darin sehe, sie zu deaktivieren. 🎜rrreee🎜Schnelles Herunterfahren ermöglicht einen schnelleren Mechanismus zum Löschen des Speichers, in meinem Benchmark-Test ist es jedoch langsamer. Möglicherweise führt dies zu einer Leistungsverbesserung der Anwendung, aber Sie müssen es selbst ausprobieren. 🎜🎜Die endgültige Konfigurationsoptimierung sieht also so aus: 🎜rrreee🎜Sie können mit diesen Konfigurationswerten experimentieren, die von Ihrer Anwendungsgröße und Serverkonfiguration abhängen. 🎜Lernen Sie von der Laravel-Community🎜
🎜🎜Laravel OPcache🎜🎜
  • 🎜install🎜rrreee
  • 🎜configure🎜rrreee
  • 🎜 Befehl 🎜
rrreee🎜🎜Stehen Sie hin und sehen Sie sich den Szenariotest an🎜🎜🎜🎜Persönlich bevorzuge ich Daten gegenüber Gesprächen🎜Szenario: (1) Fordern Sie die GET-Schnittstelle an (2) Die Anzahl der Tests beträgt 10 ( 3) Die Anzahl der Parallelitäten beträgt 100 🎜🎜🎜1000 Anfragen, Kosten 2,94 Sekunden, 340,14 Anfragen pro Sekunde🎜🎜rrreee🎜🎜Wenn ich diesen Datensatz sehe, bin ich sehr glücklich, extrem glücklich. In Bezug auf die Leistung gibt es einen so starken Kontrast, dass ich nichts sagen werde ~ OPcache hat Recht🎜🎜                                

Das obige ist der detaillierte Inhalt vonTipps zur Verbesserung der PHP7-Leistung mithilfe der OPcache-Erweiterung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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