PHP 開発チームを率いる Zend は、最近 PHP アクセラレーション製品 Zend Optimizer をオープンソース化しました。新しいプロジェクトは Github でホストされており、プロジェクト名は ZendOptimizerPlus です。今日は ZendOpcache について説明します。
はじめに
Zend Optimizer は、オペコードのキャッシュと最適化によって PHP の実行を高速化します。プリセットを共有メモリに保存します。PHP スクリプトをコンパイルします。 PHP のパフォーマンスを向上させるため。この操作により、ディスクから PHP ファイルを読み取ってコンパイルするプロセスが不要になります。さらに、コードの実行を高速化するための少量のバイトコード最適化モードも提供されます。
適用性
Zend Optimizer の現在のバージョンは、PHP 5.2.*、5.3.*、5.4.*、および PHP-5.5 開発ブランチに適しています。PHP 5.2 のサポートは将来的に中止される可能性があります。 .
インストール
まず、Zend Optimizer のソース コードをダウンロードします。
http://pecl.php.net/package/ZendOpcache
現在、私は 7.0.1 のベータ版を使用しています。解凍後、コンパイルします。
wget http://pecl.php.net/get/zendopcache-7.0.1.tgz tar xzf zendopcache-7.0.1.tgz cd zendopcache-7.0.1 phpize ./configure --with-php-config=/path_to_php_bin/php-config make make install
ConfigurationEdit php.ini
zend_extension=/...full_path.../opcache.so #以下是开发组推荐配置 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
Restart your php cgi or Apache.
configuration の詳しい説明パラメータ
opcache.enable(デフォルト値: 1)
Zend Optimizer スイッチをオフにすると、コードは実行されなくなります。
opcache.memory_consumption(デフォルト: 64)
Zend Optimizer 共有メモリのサイズ、プリコンパイル可能な PHP コードの量合計に格納されます (単位: MB)。
opcache.interned_strings_buffer(デフォルト値: 4)
インターンされた文字列によって占有される合計メモリZend オプティマイザー (単位:MB)
opcache.max_accelerated_files(デフォルト: 2000)
Zend オプティマイザー ハッシュ内のキーの最大数テーブル (スクリプト ファイルはキーに対応している必要があるため、キャッシュできるファイルの最大数である必要があります)。この値は実際には素数リストの最初の値です {223, 463, 983, 1979, 3907, 7963 , 16229, 32531, 65407, 130987} 設定値より大きい数値 設定値範囲:200~100000
#opcache.max_wasted_percentage(デフォルト値:5)
" 「無駄な」メモリがこの値に対応する割合に達すると、再起動スケジュールが開始されます。opcache.use_cwd(デフォルト値) : 1)
このコマンドを有効にすると、Zend Optimizer は現在の作業ディレクトリの名前をスクリプト キーに自動的に追加し、それによって同じ名前のファイル間のキーと値の名前の競合が排除されます。このコマンドをオフにすると改善されます。パフォーマンスは向上しますが、既存のアプリケーションに問題が発生します Break.opcache.validate_timestamps(デフォルト: 1)
無効になっている場合は、手動でリセットする必要がありますZend Optimizer を実行するか、Web サーバーを再起動して、ファイル システムの変更を有効にします。チェックの頻度は、ディレクティブ "opcache.revalidate_freq" によって制御されます。(デフォルト: 2)共有メモリの割り当てを変更するためにファイルのタイムスタンプをチェックする頻度 (秒単位)。「1」は 1 秒に 1 回、リクエストごとに 1 回チェックすることを意味します。「0」は常にチェックすることを意味します
(デフォルト: 0)include_path でファイル検索の最適化を有効または無効にします。ファイル検索が無効の場合、およびこのキャッシュされたファイルは同じ include_path で見つかる可能性があり、ファイルの検索は続行されません。したがって、include_path の他の場所に同じ名前のファイルがある場合、そのファイルは見つかりません。この最適化がアプリケーションに影響を与える場合は、デフォルトでは、ディレクティブは無効になっており、最適化がアクティブであることを意味します。
( デフォルト値: 1 ) 無効にすると、最適化されたコードのサイズを減らすために、すべてのドキュメント コメントがコードから削除されます。「ドキュメント コメント」を無効にすると、一部の既存のアプリケーションやフレームワークが壊れる可能性があります (例: Doctrine、ZF2、PHPUnit)。
無効にすると、PHP ドキュメントのコメントは SHM (共有メモリ) から読み取られません。 comments" は引き続き保存されます (save_comments=1)。使用されないコメントはアプリケーションで読み取る必要はありません。
#opcache.fast_shutdown有効にすると、コードの速度を上げるために高速シャットダウン キューが使用されます。高速シャットダウン キューは、割り当てられた各ブロックを解放せず、代わりに Zend エンジンのメモリ マネージャーに作業を行わせます。
opcache.enable_file_overrideファイルの上書きを許可します。存在に関する最適化機能 (file_exists など)。
#opcache.optimization_level
(デフォルト: 0xffffffff)#opcache.inherited_hack
(デフォルト: 1)このハックを有効にすると、「クラスを再宣言できません」エラーを一時的に解決できます。Zend Optimizer は、DECLARE_CLASS オペコードが継承を使用する場所を保存します (これらは PHP で実行できる唯一のオペコードですが、最適化によって引き起こされる可能性もあります)クラスが見つからず実行できません)。ファイルが読み取られると、オプティマイザーは現在の環境を通じて継承されたクラスをバインドしようとします。これに関する問題は、DECLARE_CLASS オペコードが現在のスクリプトに必要ない可能性があることです。スクリプトでは、オペコードが少なくともクラス定義操作を完了する必要があり、その後は実行されません。このコマンドはデフォルトで無効になっており、最適化が有効であることを意味します。これは PHP 5.3 以降では必要なくなり、この設定は
#opcache.dups_fix(デフォルト: 0)
このハックを有効にすると、「クラスを再宣言できない」問題を一時的に解決できます。 error.(デフォルト: なし)Zend Optimizer ブラックリスト ファイルの場所。
Zend Optimizer ブラックリストは次のとおりです。高速化できないファイルの名前を含むテキスト ファイル。ファイル形式は 1 行に 1 つのファイル名です。ファイル名は完全なパスまたはファイル接頭辞 (/var/www/x など) である必要があります。 /var/www ファイルとディレクトリに 'x' があるものはブロックされます) ブロックする必要があるファイルは、通常、次の 3 つの理由のいずれかを満たしています:1) ディレクトリには、Smarty や ZFW キャッシュなどの自動生成されたコードが含まれています.
2) アクセラレーションの実行時にコードが適切に実行されないため、コンパイル時の評価が遅れます。
3) コードにより Zend オプティマイザーのバグがトリガーされる
(デフォルト: 0)大きなファイルのキャッシュをファイル サイズ別に表示します。デフォルトでは、すべてのファイルがキャッシュされます。
(デフォルト: 0)N リクエストごとにキャッシュ検証をチェックします。デフォルト値 0 は、チェックが無効であることを意味します。検証値の計算によりパフォーマンスが低下するため、このコマンドは次のようにする必要があります。開発中およびデバッグ中にオンにする必要があります。
(デフォルト値: 180)From キャッシュにアクセスしなくなった後、どのように再起動をスケジュールするまでの待機時間が長い (秒単位)。Zend Optimizer はこの命令に基づいて、処理中にプロセスに問題が発生する可能性があるかどうかを判断します。この期間 (待機時間) が経過すると、Zend Optimizer に問題が発生したと見なされ、開始されます。再起動防止ロックを保持しているプロセスを強制終了します。これが発生すると、ログ レベルがレベル 3 以上の場合、「ロッカーが強制終了されました」エラーが Apache ログに記録されます。
(デフォルト: なし)Zend Optimizer のエラー ログ ファイル名。標準エラー出力 (stderr) を使用する場合は空白のままにします。
(デフォルト: 1)エラー メッセージを Web サーバー ログに送信します。デフォルトでは、致命的なエラー (レベル 0) またはエラー (レベル 1) のみがログに記録されます。また、警告 (レベル 2)、プロンプト メッセージ (レベル 3)、またはデバッグ メッセージ (レベル 4) をログに記録することもできます。
メモリ共有の優先背景。システムが選択できるように空白のままにします。
内部デバッグのみを目的として、スクリプトの実行中に共有メモリが誤って書き込まれるのを防ぎます。##opcache.mmap_base(デフォルト: なし)
共有メモリ セグメント マッピング ベース (Windows のみ)。すべての PHP プロセスは、同じ共有メモリ アドレス空間にマップする必要があります。このディレクティブが使用されます。「ベース アドレスに再接続できません」エラーを手動で修正します。
推奨学習:php ビデオ チュートリアル
以上がZendOpcache をインストールして構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。