为什么 CakePHP 3 在 Vagrant 盒子上自动加载 类 这么慢?

Why is CakePHP 3 so slow at autoloading classes on a Vagrant box?

设置

我刚刚用 composer 安装了一个新的 CakePHP 3,并且使用非常基本的默认主页,我注意到该页面加载大约需要 4 到 5 秒。这是基准测试(kitchen.com 是服务器别名):

Chrome 开发工具

PhpStorm + Xdebug


甚至composer.phar dumpautoload -o都没有改变。


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

Ajax REST 调用

{
    "settings": {
        "sitename": "Site settings",
        "desciption": "Lorem ipsum"
    }
}
public function index() {
    $this->set('settings', ['sitename' => 'Site settings', 'desciption' => 'Lorem ipsum']);
    $this->set('_serialize', ['settings']);
}

Chrome 开发工具和 PhpStorm + Xdebug


这是 CakePHP3 上的常见错误还是可能来自我的服务器配置?

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

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

我会说你的结果与典型结果相去甚远。在我 2 岁的旧笔记本电脑上,我通常会在 <150 毫秒内从 CakePHP.

收到烘焙代码的响应

编辑:我重新阅读了您的问题并注意到您正在使用 VM。共享 VM 文件系统是出了名的慢。如果您从主机共享到来宾 OS,看看是否可以通过将代码移出共享文件系统来获得更好的性能。