ホームページ > バックエンド開発 > PHP7 > OPcache 拡張機能を使用して PHP7 のパフォーマンスを向上させるためのヒント

OPcache 拡張機能を使用して PHP7 のパフォーマンスを向上させるためのヒント

coldplay.xixi
リリース: 2023-02-17 19:46:01
転載
2663 人が閲覧しました

OPcache 拡張機能を使用して PHP7 のパフォーマンスを向上させるためのヒント

推奨 (無料): PHP7

どこにいてもすぐに返信します私のメール: echo "YUBzYW1lZ28uY29tCg==" |base64 -d
序文
11時半です、もう決着の時間です。

PHP を実行すると、このようなプロセスが行われます。PHP コードはまずプリコンパイルされ、バイトコードが生成されてメモリにロードされます。最後に、CPU はコンパイルされたバイトをメモリ上で実行します。メモリのコードの断片。 PHP プログラムを実行するときに、毎回このようなプロセスを経ることがわかりますが、これは時間の無駄ではありません。そう、C 言語に従ってソース コードをコンパイルして、メモリに直接ロードできるので、お兄さんはどこですか?うん?。ライフルを取り出して、この弾丸OPcacheをロードしてください。 PHP5.5.0が登場してから、このzend拡張機能が組み込まれるようになりました。


OPcache とは
OPcache は、PHP のパフォーマンスを大幅に向上させることができる PHP の Zend 拡張機能です。
OPcache は、PHP スクリプトのプリコンパイルされたバイトコードを共有メモリに保存することで、PHP のパフォーマンスを向上させます。プリコンパイルされたバイトコードを保存する利点は、毎回 PHP スクリプトを読み込んで解析するオーバーヘッドを節約できることです。


OPcache が拡張されているかどうかを判断します

➜  ~ php -m | grep OPcache
Zend OPcache
Zend OPcache
ログイン後にコピー

有効になっていない場合は、php.ini 設定で有効にすることができます
/home /samego/service/php7.2/php.ini

➜  ~ echo zend_extension="opcache.so" >> /home/samego/service/php7.2/php.ini
ログイン後にコピー

OPcache の構成について
次に、PHP で OPcache を有効にする必要があります。設定ファイル (デフォルトは閉じられています):

opcache.enable=1
ログイン後にコピー

OPcache の最適化設定を続けてみましょう:

opcache.memory_consumption=512
ログイン後にコピー

この設定は、OPcache に割り当てるメモリ領域 (単位: MB) を示します。 , set 64 より大きい値が適しています。

opcache.interned_strings_buffer=64
ログイン後にコピー

この設定は、実際の文字列に割り当てる領域 (単位: MB) を示します。16 より大きい値を設定するだけです。

opcache.max_accelerated_files=32531
ログイン後にコピー

この構成は、キャッシュできるスクリプトの数を示します。この値は、プロジェクトに含まれるスクリプトの数にできるだけ近い (またはそれ以上) ように設定してください。

opcache.validate_timestamps=0
ログイン後にコピー

再検証スクリプトの構成値を変更します。0 (最高のパフォーマンス) に設定すると、PHP コードを変更するたびに OPcache を手動でクリアする必要があります。手動パージを望まない場合は、これを 1 に設定し、opcache.revalidate_freq を介して再検証間隔を構成できます。これにより、x 秒ごとに変更をチェックする必要があるため、パフォーマンスが低下する可能性があります。

opcache.save_comments=1
ログイン後にコピー

この設定ではスクリプトにコメントが残ります。一部のライブラリはこの設定に依存しており、オフにする利点が見つからないため、このオプションをオンにすることをお勧めします。

opcache.fast_shutdown=0
ログイン後にコピー

高速シャットダウンは、メモリをクリアするためのメカニズムを高速化しますが、ベンチマーク テストでは遅くなります。これにより、アプリケーションのパフォーマンスが向上する可能性がありますが、自分で試してみる必要があります。

最終的な構成の最適化は次のようになります:

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
ログイン後にコピー

これらの構成値を試してみることができます。具体的な構成値は、アプリケーションのサイズとサーバー構成によって異なります。
Laravel コミュニティから学ぶ


Laravel OPcache

  • install

    ➜  ~ composer require appstract/laravel-opcache
    ログイン後にコピー
  • configure

    ➜  ~ php artisan vendor:publish --provider="Appstract\Opcache\OpcacheServiceProvider" --tag="config"
    ログイン後にコピー
  • 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
ログイン後にコピー

様子をみるシナリオ テスト

個人的には、データに関する
シナリオの方が好みです: (1) GET インターフェイスのリクエスト (2) テスト数は 10 (3) 同時実行数は 100

延長なしのケース

1000 リクエスト、32.32 秒かかり、1 秒あたり 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
ログイン後にコピー

ケースに延長あり

1000 リクエストにかかった時間は 2.94 秒、リクエスト数は 1 秒あたり 340.14 でした。

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
ログイン後にコピー

この一連のデータを見てとてもうれしく思いました。とてもうれしかったです。パフォーマンスの面では、あまりにもはっきりとしたコントラストがあるので、何も言うことはありません ~OPcache が正しいです

以上がOPcache 拡張機能を使用して PHP7 のパフォーマンスを向上させるためのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート