検索
ホームページバックエンド開発PHP7高品質ノートがここにあります! PHP7のパフォーマンス最適化について

Opcache

1. Opcache の原理
PHP の通常の実行プロセスは次のとおりです。

リクエスト (nginx、apache、cli など) –> Zend エンジンは .php ファイルを読み取ります –> その辞書と式をスキャンします –> ファイルを解析します –> 実行されるコンピューター コードを作成します ( Opcode) –> ;最後に Opcode を実行–>response return

PHP スクリプトが要求されるたびに、上記の手順が実行されます。PHP ソース コードが変更されない場合、Opcode も変更されません。明らかに、毎回オペコードを再生成する必要はありません。Web のユビキタス キャッシュ メカニズムと組み合わせることで、オペコードをキャッシュできます。将来的には、キャッシュされたオペコードに直接アクセスした方が高速ではないでしょうか? オペコードを有効にした後のフローチャートキャッシュは次のとおりです。

オペコード キャッシュの目的は、コンパイルの繰り返しを回避し、CPU とメモリのオーバーヘッドを削減することです。
2. Opcache 構成
php.ini の下に追加します:

// 加载opcache(需确认已安装opcache拓展)
zend_extension=opcache.so
// 开启opcache
opcache.enable = 1
// OPcache共享内存存储大小,单位MB
opcache.memory_consumption=1024 // 1G
// PHP使用了一种叫做字符串驻留,默认是4MB
opcache.interned_strings_buffer=32
// 这个选项用于控制内存中最多可以缓存多少个PHP文件,这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和
opcache.max_accelerated_files=80000
// 设置缓存的过期时间(单位是秒),为0的话每次都要检查
opcache.revalidate_freq=3
// 从字面上理解就是“允许更快速关闭”
opcache.fast_shutdown=1
// CLI环境下,PHP启用OPcache
opcache.enable_cli=1

HugePage

1. HugePage の原則
この機能を有効にすると、PHP7 は独自の TEXT セグメント (実行本体) を Huagepage に「移動」します。以前のテストでは、WordPress での QPS が 2% ~ 3% 増加することが着実に確認できました。
Hugepageとは何かというと、簡単に言うとデフォルトのメモリを4KB単位でページングしており、仮想アドレスとメモリアドレスを変換する必要があり、この変換にはテーブルルックアップが必要になります。プロセスでは、CPU に TLB (Translation Lookaside Buffer) が組み込まれます。仮想ページが小さい場合、テーブル内のエントリの数が多くなり、TLB サイズが制限されているのは明らかです。エントリが多いほど、値は高くなります。 TLB のキャッシュ ミスが発生するため、ラージ メモリ ページを有効にすると、間接的にこの TLB キャッシュ ミスを減らすことができます。詳細な紹介については、Google でよく調べたので詳しくは説明しません。ここでは、有効にする方法を中心に説明しますこの新機能により、パフォーマンスが大幅に向上します。
2. HugePage の構成

$ sudo sysctl vm.nr_hugepages=512 // 切勿越大越好,会长占内存

512 の予約済み巨大ページ メモリを割り当てます:

cat /proc/meminfo  | grep Huge
AnonHugePages:    106496 kB
HugePages_Total:     512
HugePages_Free:      504
HugePages_Rsvd:       27
HugePages_Surp:        0
Hugepagesize:       2048 kB

次に、php.ini:

opcache.huge_code_pages=1

## を追加します。 #Opcache ファイル キャッシュ

1. Opcache ファイル キャッシュの概要opcache を使用して、コンパイルされた PHP ファイルをファイルとして保存し、PHP ソース コードの保護とスクリプトの高速化を実現します。明らかにパフォーマンスが向上します

2. Opcache ファイル キャッシュの設定php.ini:

opcache.file_cache=/tmp
を追加して、PHP が /tmp ディレクトリにあるように、一部の Opcode バイナリ エクスポートをキャッシュします。ファイルは、PHP ライフサイクル全体にわたって存在する可能性があります。

個人テスト

システム: centOs 7

php バージョン: 7.4
nginx
laravel: 8.5

cpu:95%- 96%

メモリ: 2G/16G
10 分 4W 同時実行
障害率: 24%

集計レポート


高品質ノートがここにあります! PHP7のパフォーマンス最適化について

1 秒あたりのトランザクション処理数

![PHP7 パフォーマンスの最適化]
![PHP7 パフォーマンスの最適化に関するメモ]

高品質ノートがここにあります! PHP7のパフォーマンス最適化について

メモリ: 5.8G/16G (ここでは HugePage が 2048 に設定されています)

10 分で 4W の同時実行
障害率: 0%


高品質ノートがここにあります! PHP7のパフォーマンス最適化について1秒あたりに処理されたトランザクション数

高品質ノートがここにあります! PHP7のパフォーマンス最適化について

高品質ノートがここにあります! PHP7のパフォーマンス最適化について1秒あたりのトランザクションの処理

高品質ノートがここにあります! PHP7のパフォーマンス最適化について推奨学習: 「

PHP7チュートリアル
>>」

以上が高品質ノートがここにあります! PHP7のパフォーマンス最適化についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はlearnkuで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)