1.概要
新機能PHPバイトコードキャッシュはありませんが、多くの個別の拡張があるなどAPC、eAcceleratorのとXache、として、達成することができますが、今のように、これらの拡張機能はPHP 5.5.0から始まり、PHPのコアに統合されていない、PHPがビルトインバイトZendのOpcacheと呼ばれるコードのキャッシュ機能。
私たちは始める前に、のは、どのようなバイトコードキャッシュ、およびどのようなバイトコードキャッシュはいの役割を見てみましょう。
:我々はすべて知っているように、PHPはインタプリタ言語であるPHPスクリプトを実行すると、PHPスクリプトコードを解析する際に、Zendの上に構築された仮想マシン、PHPインタプリタは、コードはZendのPHPオペコード(オペコードのシリーズにコンパイルされhttp://php.net/手動/ ZH / internals2.opcodes.php、各オペコードはそうバイトコードと呼ばれる、1バイト長であるため、バイトコードを直接Zendの仮想マシンを実行することができる)、次いでバイトコードを実行します。すべてのHTTP要求はより多くのリソースを消費し、解析、コンパイルしてPHPスクリプトを実行し続けなければならない場合には、このような各要求のためのPHPファイルは、それは、多くのリソースを消費します。PHPのソースコードを変更しない場合は、対応するバイトコードが変更されていない、毎回オペコードを再生成する必要がない明確で、ユビキタスWebアプリケーションのキャッシュメカニズムと組み合わせて、我々は、キャッシュされたオペコードの第一世代を置くので、次のことができますキャッシュから直接取ら回、それがすぐにありますか?以下は、前と後に有効フローチャートオペコードのキャッシングです。
次の要求のPHPスクリプト、PHPインタプリタは常に、解析され、コンパイルされたPHPコードを読んでいないように、バイトコードキャッシュは、プリコンパイルされたPHPバイトコードを格納することができた場合、メモリから直接読み取るプリコンパイルされた単語セクションコード、その後、すぐに実行には、これは非常に、多くの時間を節約するアプリケーションのパフォーマンスを向上させることができます。
2、ZendのOpcacheを有効にします
注:あなたは、Windowsの開発環境を使用している、または使用した場合
brew
やapt-get
、そのようなPHPのインストールなどのコマンドは、コンパイル手順をスキップすることができます。
デフォルトでは、ZendのOpcache開いていない、我々は、コンパイル時に使用する必要がある--enable-opcache
のZend Opcacheを有効にするには、指定されました。
PHPをコンパイルした後も、する必要がphp.ini
Opcache拡張パスを指定します。
代替としてzend_extension = /パス/に/ opcache.so
一般的なPHPのZend Opcache拡張パスでコンパイルが成功した後に表示されますが、あなたは覚えていないことができれば、あなたはPHPのエクステンションディレクトリを検索するには、次のコマンドを使用することができます。
--extension-のphp-config設定ディレクトリ
メモ:Xdebugをを使用している場合は、必要な
php.ini
ZendのOpcacheをロードするために、その後はXdebugをロードします。
更新php.ini
再起動後やPHPプロセスが成功有効にするかどうかを確認:
3、ZendのOpcacheを設定
ZendのOpcache有効も必要php.ini
次の基準のような構成の一例であり、構成のZend Opcacheました:
opcache.validate_timestamps=1 //生产环境中配置为0 opcache.revalidate_freq=0 //检查脚本时间戳是否有更新时间 opcache.memory_consumption=64 //Opcache的共享内存大小,以M为单位 opcache.interned_strings_buffer=16 //用来存储临时字符串的内存大小,以M为单位 opcache.max_accelerated_files=4000 //Opcache哈希表可以存储的脚本文件数量上限 opcache.fast_shutdown=1 //使用快速停止续发事件
注:后续我们还会进一步介绍Zend Opcache的配置,PHP官网中列出了Zend Opcache的全部设置:http://ua2.php.net/manual/zh/opcache.configuration.php。
4、使用Zend Opcache
Zend Opcache使用起来很简单,因为启用之后它会自动运行,Zend Opcache会自动在内存中缓存预先编译好的PHP字节码,如果缓存了某个文件的字节码,就执行对应的字节码。
如果php.ini
中配置了opcache.validate_timestamps
值为0,需要小心,因为Zend Opcache将不能觉察PHP脚本的变化,必须手动清空Zend OPcache缓存的字节码,才能让它发现PHP文件的变动。这个配置适合在生产环境中设置为0,但在开发环境会带来不便,我们可以在开发环境中这样配置启用自动验证缓存功能:
opcache.validate_timestamps=1 opcache.revalidate_freq=0