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
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
1. Opcache ファイル キャッシュの概要opcache を使用して、コンパイルされた PHP ファイルをファイルとして保存し、PHP ソース コードの保護とスクリプトの高速化を実現します。明らかにパフォーマンスが向上します
2. Opcache ファイル キャッシュの設定php.ini:
opcache.file_cache=/tmp
php バージョン: 7.4
nginx
laravel: 8.5
メモリ: 2G/16G
10 分 4W 同時実行
障害率: 24%
![PHP7 パフォーマンスの最適化]
![PHP7 パフォーマンスの最適化に関するメモ]
10 分で 4W の同時実行
障害率: 0%
1秒あたりに処理されたトランザクション数
1秒あたりのトランザクションの処理
推奨学習: 「
PHP7チュートリアル>>」
以上が高品質ノートがここにあります! PHP7のパフォーマンス最適化についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。