PHP обрабатывает Lavavel очень медленно, есть какие-нибудь подсказки?

#php #laravel #macos

#php #laravel #macos

Вопрос:

Мне нужно поддерживать новый проект, основанный на Laravel 5.3. Сегодня я настроил свою новую среду разработки на своем компьютере macOS (установил PHP и Apache из homebrew) и обнаружил, что обработка PHP происходит очень медленно. Загрузка страницы занимает 75 секунд, также выполнение команд artisan занимает минуты перед любым выводом. Например, «оптимизация artisan» занимает более 5 минут.

Я провел некоторое тестирование, я думал, что проблема в базе данных. Итак, я просто выключил службу mysql, и снова для отображения страницы с исключением mysql требуется чуть более 75 секунд.

Я действительно не могу понять, в чем может быть проблема.

php -v

 PHP 7.1.33 (cli) (built: Oct 31 2020 00:01:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.33, Copyright (c) 1999-2018, by Zend Technologies
  

laravel.log пуст, ошибок нет.

права доступа к файлам / папкам установлены на RW для всех

Я также пробовал с php 7.0, проблема просто сохраняется.

Я кое-что заметил, когда я запускаю проект внутри «htdocs» XAMPP с установкой php 7.3, это происходит быстро. Проблема в том, что php 7.3 несовместим с Laravel 5.3, но он очень быстро показывает страницу исключения.

Похоже, проблема связана только с php, установленным из homebrew.

Есть какие-либо подсказки по этому поводу?

Комментарии:

1. «но он очень быстро показывает страницу исключения». Вероятно, это связано с тем, что запрос завершается с ошибкой задолго до того, как будет вызвана длительная функция приложения. Я бы начал с изучения всех классов провайдеров в /app/Providers папке. Я подозреваю, что один из них выполняет какой-то длительный процесс. Помимо этого внутреннего ощущения, вы могли бы использовать профилировщик xdebug , чтобы точно определить, на обработку чего уходит все время

2. Прежде всего, вы можете попробовать ввести a die() в свой public/index.php , чтобы проверить, сколько времени требуется для перехода запроса из браузера через веб-сервер на вашу входную страницу php. Затем вы делаете то же самое для различных контрольных точек в вашем приложении. github.com/barryvdh/laravel-debugbar может помочь в последней части