ホームページ >バックエンド開発 >PHP7 >PHP7 で opcache を有効にしてパフォーマンスを向上させる方法をご存知ですか?

PHP7 で opcache を有効にしてパフォーマンスを向上させる方法をご存知ですか?

藏色散人
藏色散人転載
2021-02-10 09:10:153117ブラウズ

ニアオ兄弟は、PHP7 のパフォーマンスを向上させるためのヒントがいくつかあるとブログで述べています。最初の 1 つは、opcache を有効にすることです:

Opcache を有効にしない場合でも、Opcache を有効にした PHP-5.6 よりも PHP7 の方が高速であるため、Zend Opcache を有効にすることを忘れないでください。
したがって、前のテスト期間中に、一部の人は Opcache を有効にしませんでした。

##Opcache とは何ですか?

Opcache の前身は

Optimizer です。これは、PHP の公式企業である Zend によって開発された、クローズドソースですが無料で使用できる PHP 最適化加速コンポーネントです。 。オプティマイザーは、PHP コードのプリコンパイルによって生成されたスクリプト ファイル Opcode を共有メモリにキャッシュし、今後繰り返し使用できるようにすることで、ディスクからコードを読み取って再度コンパイルするという時間の消費を回避します。同時に、コードの実行を高速化するためにいくつかのコード最適化モードも適用します。これにより、PHP の実行が高速化されます。

# PHP の通常の実行プロセスは次のとおりです

##request リクエスト (nginx、apache、cli など)-->Zend エンジンが .php ファイルを読み取ります-->辞書と式をスキャンします-->ファイルを解析します-- >実行されたコンピューター コード (オペコードと呼ばれる) を作成します --> 最後にオペコードを実行します --> 応答が返されます

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

オペコード キャッシュの目的は、コンパイルの繰り返しを回避し、CPU とメモリのオーバーヘッドを削減することです。

Opcache のインストールについては次のとおりです。

インストール:

1、找到opcache的扩展,我的是php7.1yum list php71*
2、安装扩展
yum install php71w-opcache.x86_64
構成:

zend_extension=opcache.so
[opcache]
;开启opcache
opcache.enable=1  ;CLI环境下,PHP启用OPcache
opcache.enable_cli=1;OPcache共享内存存储大小,单位MB
opcache.memory_consumption=128  ;PHP使用了一种叫做字符串驻留(string interning)的技术来改善性能。例如,如果你在代码中使用了1000次字符串“foobar”,在PHP内部只会在第一使用这个字符串的时候分配一个不可变的内存区域来存储这个字符串,其他的999次使用都会直接指向这个内存区域。这个选项则会把这个特性提升一个层次——默认情况下这个不可变的内存区域只会存在于单个php-fpm的进程中,如果设置了这个选项,那么它将会在所有的php-fpm进程中共享。在比较大的应用中,这可以非常有效地节约内存,提高应用的性能。
这个选项的值是以兆字节(megabytes)作为单位,如果把它设置为16,则表示16MB,默认是4MB
opcache.interned_strings_buffer=8;这个选项用于控制内存中最多可以缓存多少个PHP文件。这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和。
设置值取值范围最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。也就是说在200到1000000之间。
opcache.max_accelerated_files=4000;设置缓存的过期时间(单位是秒),为0的话每次都要检查
opcache.revalidate_freq=60;从字面上理解就是“允许更快速关闭”。它的作用是在单个请求结束时提供一种更快速的机制来调用代码中的析构器,从而加快PHP的响应速度和PHP进程资源的回收速度,这样应用程序可以更快速地响应下一个请求。把它设置为1就可以使用这个机制了。
opcache.fast_shutdown=1;如果启用(设置为1),OPcache会在opcache.revalidate_freq设置的秒数去检测文件的时间戳(timestamp)检查脚本是否更新。
如果这个选项被禁用(设置为0),opcache.revalidate_freq会被忽略,PHP文件永远不会被检查。这意味着如果你修改了你的代码,然后你把它更新到服务器上,再在浏览器上请求更新的代码对应的功能,你会看不到更新的效果
强烈建议你在生产环境中设置为0,更新代码后,再平滑重启PHP和web服务器。
opcache.validate_timestamps=0 ;开启Opcache File Cache(实验性), 通过开启这个, 我们可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升.这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.opcache.file_cache=/tmp
#phpinfo の表示:

#テスト結果:

#同じインターフェースが数百ミリ秒から約 50 ミリ秒に改善されました

以上がPHP7 で opcache を有効にしてパフォーマンスを向上させる方法をご存知ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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