如何在 PHP 7.4 中启用 opcache 预加载?
How can I enable opcache preloading in PHP 7.4?
我想在 PHP 7.4 的生产服务器上启用 opcache preloading (RFC)。
我正在使用 Symfony 4 如果它改变了什么。
首先你应该补充:
opcache.preload=/path/to/project/preload.php
给你的php.ini
然后在您的 PHP 脚本中,您应该传入 opcache_compile_file($file);
您想要预加载的每个文件。
根据 blog post 这似乎是微不足道的。显然 Symfony 从 4.4 开始生成一个预加载脚本,必须在 php.ini
:
中设置
opcache.preload=/path/to/project/var/cache/prod/App_KernelProdContainer.preload.php
我在本地 Docker 环境中做了一些测试,结果是这样的:
PHP 7.3 无 OPcache(当前)
Requests per second: 8.75 [#/sec] (mean)
Time per request: 114.402 [ms] (mean)
PHP 7.4 无 OPcache
Requests per second: 11.44 [#/sec] (mean)
Time per request: 87.417 [ms] (mean)
PHP 7.4 带 OPcache,无预加载 (Apache + modphp)
Requests per second: 30.25 [#/sec] (mean)
Time per request: 33.053 [ms]
PHP 7.4 带有 OPcache,没有预加载 (nginx + php fpm)
Requests per second: 40.00 [#/sec] (mean)
不幸的是我无法启用预加载 :( 我遇到了以下错误(在 Apache+Mod 和 Nginx+FPM 中):
double free or corruption (!prev)
child pid 17 exit signal Aborted (6), possible coredump (…)
虽然这个功能看起来像 WIP。当我能够使用这个预加载的东西时,我将重新验证这个答案。总的来说,我印象非常深刻,仅仅从 PHP 7.3
升级到 7.4
就可以提高 30% 的性能。
我想在 PHP 7.4 的生产服务器上启用 opcache preloading (RFC)。
我正在使用 Symfony 4 如果它改变了什么。
首先你应该补充:
opcache.preload=/path/to/project/preload.php
给你的php.ini
然后在您的 PHP 脚本中,您应该传入 opcache_compile_file($file);
您想要预加载的每个文件。
根据 blog post 这似乎是微不足道的。显然 Symfony 从 4.4 开始生成一个预加载脚本,必须在 php.ini
:
opcache.preload=/path/to/project/var/cache/prod/App_KernelProdContainer.preload.php
我在本地 Docker 环境中做了一些测试,结果是这样的:
PHP 7.3 无 OPcache(当前)
Requests per second: 8.75 [#/sec] (mean)
Time per request: 114.402 [ms] (mean)
PHP 7.4 无 OPcache
Requests per second: 11.44 [#/sec] (mean)
Time per request: 87.417 [ms] (mean)
PHP 7.4 带 OPcache,无预加载 (Apache + modphp)
Requests per second: 30.25 [#/sec] (mean)
Time per request: 33.053 [ms]
PHP 7.4 带有 OPcache,没有预加载 (nginx + php fpm)
Requests per second: 40.00 [#/sec] (mean)
不幸的是我无法启用预加载 :( 我遇到了以下错误(在 Apache+Mod 和 Nginx+FPM 中):
double free or corruption (!prev)
child pid 17 exit signal Aborted (6), possible coredump (…)
虽然这个功能看起来像 WIP。当我能够使用这个预加载的东西时,我将重新验证这个答案。总的来说,我印象非常深刻,仅仅从 PHP 7.3
升级到 7.4
就可以提高 30% 的性能。