Приложение Laravel очень медленно при подключении к базе данных

Примечание. Теперь, когда я знаю, откуда этот вопрос, я изменил вопрос. Теперь он содержит только необходимую информацию.

Я новичок в инфраструктуре PHP Laravel.

У меня очень маленькое приложение, работающее на моем компьютере. Он связан с базой данных MySQL и имеет модель пользователя. Я использую класс Auth для входа и выхода.

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

Используя встроенный профайлер, я понял две проблемы. Во-первых, как я уже сказал, загрузка страницы занимает чуть больше 1000 миллисекунд. Во-вторых, структура делает один SQL каждый раз, когда я загружаю страницу при входе в систему. Запрос выполняет поиск пользователя с определенным идентификатором (мой идентификатор). Я предполагаю, что там есть информация о зарегистрированном пользователе. Но не должно быть какого-то кеша. Будет ли это проблемой, если моему веб-сайту придется обрабатывать много запросов в секунду.

Я понял, что использование Auth::check() в представлении - вот что вызывает проблему. У меня около 4 Auth::check() - это мой режим Blade. Когда у меня их нет, все идет быстро. Если он у меня есть, он медленный. Тогда, независимо от того, сколько у меня есть, он не становится намного медленнее. Это похоже на то, что инициализация класса Auth занимает слишком много времени или что-то в этом роде. Я думаю, это объясняет, почему это происходит только при входе в систему.

Я погрузился в код Laravel, и я узнал, что когда Auth::check() вызывается в первый раз, Auth-класс должен "активировать" мой сеанс, получая информацию о пользователе из базы данных. Это объясняет, что запрос выполняется каждый запрос страницы. Но поскольку профайлер говорит, что запрос даже не выполняет миллисекунду, я все еще не знаю, почему это замедляет работу приложения.

Новая информация: Даже когда я не отправляю запрос в базу данных, простой акт подключения к нему занимает почти секунду. Это причина, по которой она медленная. Я думаю, что я очень близко решаю проблему.

Любая идея до сих пор?

Спасибо заранее.

Примечания

  • Тот факт, что Auth::check() находится в представлении, ничего не меняет.
  • Использование другого метода, такого как Auth::guest(), не решает проблему.
  • Новое: Подключение к базе данных - это медленное.

Ответы

Ответ 1

Наконец-то я нашел способ исправить это.

При чтении некоторых сообщений на многих форумах о XAMPP, MySQL и PHP, и я где-то читал, что предпочтительнее использовать 127.0.0.1, потому что locahost нуждается в дополнительном поиске DNS.

В файле конфигурации базы данных я просто изменил locahost на 127.0.0.1.

Теперь все быстро.

Я нахожу это действительно странным. Использование locahost в файле конфигурации, используемом для соединения с базой данных, занимает больше секунды!

Ответ 2

Я не согласен с примером Хаммо. Наличие какой-либо информации пользователя, отличной от их идентификатора в сеансе, представляет собой риск безопасности, поэтому большинство платформ используют этот маршрут. Есть ли что-нибудь еще, выполняемое при входе пользователя в систему, кроме запроса на их запись? Это определенно не то, что замедляет ваше приложение.