Почему CakePHP 3 так медленно загружает классы в Vagrant?

Настройка

  • Vagrant Box (память 2 Гб)
  • Апач/2.2.22 (Убунту)
  • PHP 5.4.38-1+deb.sury.org~precise+2 (cli) (построено: 20 февраля 2015 г., 12:16:47)
  • ТортPHP 3

Я только что установил свежий 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

введите здесь описание изображения

введите здесь описание изображения


Так это распространенная ошибка в CakePHP 3 или она может быть связана с конфигурацией моего сервера?


person hjrshng    schedule 09.04.2015    source источник
comment
К вашему сведению: у меня были ошибки с отладкой PhpStorm, которые вызывали серьезные задержки. Обязательно очистите кеш браузера и удалите отладочные файлы cookie. Я видел такие замедления, и это всегда было вызвано отладчиком.   -  person Reactgular    schedule 13.04.2015


Ответы (1)


Вы должны убедиться, что у вас включено кэширование кода операции. В целом производительность PHP сильно снижается без кэширования кода операции.

Также убедитесь, что ваша машина не ограничена с точки зрения производительности ввода-вывода. Поскольку приложения PHP должны загружать несколько файлов при каждом запросе, дисковый ввод-вывод имеет большое значение.

Я бы сказал, что ваши результаты очень далеки от типичных. Обычно я получаю ответы от запеченного кода за ‹150 мс на моем 2-летнем ноутбуке от CakePHP.

Изменить: я перечитал ваш вопрос и заметил, что вы используете виртуальную машину. Общеизвестно, что файловые системы общих виртуальных машин работают медленно. Если вы делитесь с хоста в гостевой ОС, посмотрите, повысится ли производительность, переместив свой код из общей файловой системы.

person Mark Story    schedule 09.04.2015
comment
Чтобы дополнить этот ответ, вы также можете использовать NFS для общей папки. У меня была аналогичная проблема с другим приложением, когда дисковый ввод-вывод приводил к загрузке приложения на несколько секунд. После смены на NFS все стало меньше 30 миллисекунд. - person José Lorenzo Rodríguez; 10.04.2015
comment
Хорошо, изменение общей папки на nfs решило проблему. Спасибо ! - person hjrshng; 11.04.2015
comment
Если кто-то обнаружит, что общие ресурсы nfs еще работают медленно, я бы порекомендовал использовать режим rsync. Или, по возможности, просто не запускайте свое приложение по пути, совместно используемому с хостом. - person AD7six; 23.07.2015