#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 может помочь в последней части