Pull to refresh

Comments 4

Так сентри прям из коробки умеет N+1 находить, с нормальным трейсом, запросом и так далее.
И когда это Pulse стал стандартом интересно)

"Стандарт" мониторинга Laravel-приложений - это Laravel Nightwatch.

Но и это очень спорный "стандарт".

Что касается N+1, если всё делать правильно, то один вызов убирает эту проблему:

Model::automaticallyEagerLoadRelationships();

https://laravel.com/docs/13.x/eloquent-relationships#automatic-eager-loading

Странно видеть поиск проблемы N+1 на проде.

Покрываете интеграционными тестами все эндпоинты. ИИ сейчас вам это сделает легко и играючи. Можно прикрутить ассерты количества ожидаемых запросов при запуске тестируемого метода или эндпоинта.

Как выше сказали - используете

Model::automaticallyEagerLoadRelationships();

Или лучше того - включаете ошибку при загрузке не подгруженной связи на проде, или везде.

use Illuminate\Database\Eloquent\Model;
 
/**
 * Bootstrap any application services.
 */
public function boot(): void
{
    Model::preventLazyLoading(! $this->app->isProduction());
}

Спасибо за развернутый комментарий и полезные дополнения по коду!

Согласен, Model::preventLazyLoading — отличный инструмент для дисциплины в разработке. Однако, как показывает практика, о нём либо забывают на старте проекта, либо боятся включать на уже живом и объемном легаси из-за риска "уронить" фронтенд неожиданным исключением.

Мой подход и пакет нацелены именно на удобство и наглядность:

  1. Прозрачность: Пакет не просто блокирует загрузку, а помогает быстро подсветить места, которые требуют оптимизации, без радикальных мер.

  2. Комплексность: В отличие от стандартного метода, который борется только с Lazy Loading, решение помогает отслеживать ещё и аномально медленные запросы. Это критично, когда N+1 нет, но один тяжелый запрос тормозит всю страницу.

  3. Автоматизация: ИИ для тестов — это мощно, но иметь инструмент, который "из коробки" мониторит состояние эндпоинтов и дает быстрый фидбек разработчику в процессе написания кода, всё ещё очень удобно.

Рад, что тема вызвала дискуссию — это лучший способ найти оптимальные практики!

Sign up to leave a comment.

Articles