为什么CakePHP 3在Vagrant盒子上自动加载类的速度如此之慢?

Ha *_* Ja 5 cakephp autoload vagrant cakephp-3.0

建立

  • 流浪者盒(2GB内存)
  • Apache/2.2.22(Ubuntu)
  • PHP 5.4.38-1 + deb.sury.org~prelension + 2(cli)(建于2015年2月20日12:16:47)
  • CakePHP 3

我刚刚用作曲家安装了一个新的CakePHP 3,并且在非常基本的默认主页上,我注意到该页面需要加载4s~5s.以下是基准测试(kitchen.com是服务器别名):

Chrome开发工具

在此输入图像描述

PhpStorm + Xdebug

在此输入图像描述


甚至composer.phar dumpautoload -o没有改变一件事.


有时一些REST调用(返回小json)可能会达到~12s因为自动加载和php_sapl_name:

Ajax REST调用

{
    "settings": {
        "sitename": "Site settings",
        "desciption": "Lorem ipsum"
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 控制器动作:
public function index() {
    $this->set('settings', ['sitename' => 'Site settings', 'desciption' => 'Lorem ipsum']);
    $this->set('_serialize', ['settings']);
}
Run Code Online (Sandbox Code Playgroud)

Chrome开发工具和PhpStorm + Xdebug

在此输入图像描述

在此输入图像描述


那么它是CakePHP 3上的常见错误还是来自我的服务器配置?

Mar*_*ory 4

您应该确保启用了操作码缓存。一般来说,如果没有操作码缓存,PHP 性能会受到很大影响。

还要确保您的机器在 IO 性能方面不受限制。由于 PHP 应用程序需要在每次请求时加载大量文件,因此磁盘 IO 很重要。

我想说你的结果与典型结果相差甚远。在我的 2 年旧笔记本电脑上,我通常会在不到 150 毫秒的时间内从 CakePHP 获得烘焙代码的响应。

编辑:我重新阅读了你的问题,发现你正在使用虚拟机。共享虚拟机文件系统的速度非常慢。如果您从主机共享到来宾操作系统,请查看通过将代码移出共享文件系统是否可以获得更好的性能。

  • 为了补充这个答案,您还可以使用“NFS”作为共享文件夹。我在另一个应用程序中遇到了类似的问题,磁盘 IO 使应用程序需要几秒钟的时间才能加载。更改为 NFS 后,一切都在 30 毫秒以下。 (2认同)