为什么Symfony3这么慢?

时间:2016-08-12 21:33:36

标签: symfony

我安装了Symfony3框架标准版。我正在尝试打开主页(app.php prod),它加载300-400ms。 这是我的探查器信息: enter image description here  我也用php7。

为什么这么久?

3 个答案:

答案 0 :(得分:6)

Hewwo TheMrbikus~

您可以尝试优化Zend OPCache。 以下是一些推荐设置

opcache.revalidate_freq
基本上,代码缓存过期的频率(以秒为单位)并检查代码是否已更改。 0意味着它会检查每个请求的PHP代码(这会增加许多统计系统调用)。在开发环境中将其设置为0。由于下一个设置,生产并不重要。

opcache.validate_timestamps
启用此选项后,PHP将根据您的opcache.revalidate_freq值检查文件时间戳 当它被禁用时,opcache.revaliate_freq被忽略,并且永远不会检查PHP文件是否有更新的代码。因此,如果您修改代码,更改将无法实际运行,直到您重新启动或重新加载PHP(强制重新加载kill -SIGUSR2)。 是的,这是一个痛苦的屁股,但你应该使用它。为什么?在您更新或部署代码时,新代码文件可能会与旧代码混合在一起 - 结果未知。地狱不安全

opcache.max_accelerated_files
控制一次最多可以在内存中保存多少PHP文件。重要的是你的项目没有你设置的任何文件。对于~6000个文件的代码库,我使用素数8000来表示maxacceleratedfiles 您可以运行find . -type f -print | grep php | wc -l来快速计算代码库中的文件数。

opcache.memory_consumption
默认值为64MB。您可以使用函数opcachegetstatus()来告诉opcache正在消耗多少内存以及是否需要增加数量。

opcache.interned_strings_buffer
一个非常整洁的设置与0文档。 PHP使用一种称为字符串实习的技术来提高性能 - 例如,如果你有字符串" foobar"在您的代码中1000次,内部PHP将为此字符串存储1个不可变变量,并使用指向它的指针用于其他999次您使用它。酷。
此设置将其提升到下一级别 - 而不是为每个SINGLE php-fpm进程提供这些不可变字符串的池,此设置在所有php-fpm进程中共享它。它可以节省内存并提高性能,尤其是在大型应用程序中 该值以兆字节为单位,因此将其设置为" 16"为16MB。默认值很低,为4MB。

opcache.fast_shutdown
另一个有趣的设置没有有用的文档。 "允许更快的关机"。
哦好的。这样可以帮助我。这实际上做的是提供一种更快的机制,用于在单个请求结束时调用代码中的析构函数,以加快响应并回收php worker,以便他们更快地为下一个传入请求做好准备。
将其设置为1并将其打开。

opcache=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=8000
opcache.validate_timestamps=0
opcache.revalidate_freq=0
opcache.fast_shutdown=1

我希望它有助于提高你的表现

亲切,
Preciel。

答案 1 :(得分:3)

TheMrbikus,尝试使用以下元素进行一些优化:

  • 使用APC
  • 使用Bootstrap文件

参考:http://symfony.com/doc/current/performance.html

答案 2 :(得分:0)

  • 使用OPCache PHP7
  • 使用Apache PHP-FPM。

电子邮件发送过程,并可能在表单呈现操作期间减慢速度。创建一个空白测试控制器。