🔍 Профилирование MongoDB-запросов в Laravel
Медленный роут часто связан не с самим PHP. Обычно виноваты неоптимальные запросы, отсутствующий индекс или дорогая агрегация. Без видимости на уровне драйвера ловить такое — гадание на кофейной гуще.
В гайде собирают лёгкий монитор для связки Laravel + MongoDB из трех частей:
— middleware замеряет общую длительность HTTP-запроса;
— класс, реализующий CommandSubscriber из MongoDB PHP driver, ловит события commandStarted / commandSucceeded / commandFailed и считает длительность каждой команды;
— метрики собираются в QueryMonitorService и в конце реквеста сбрасываются в коллекцию performance_logs.
Ключевое → подписка регистрируется один раз в boot() провайдера:
Дальше драйвер сам отдаёт операцию (find, aggregate, insert), коллекцию и тайминг, без правок прикладного кода. Запросы дольше порога помечаются is_slow.
Чтобы коллекция логов не разрасталась до неприличия, навешивают TTL-индекс на created_at с expireAfterSeconds: 604800 (неделя). Mongo сам подметает старьё.
🔗 Подробнее
Библиотека пхпшника
#how_to
Медленный роут часто связан не с самим PHP. Обычно виноваты неоптимальные запросы, отсутствующий индекс или дорогая агрегация. Без видимости на уровне драйвера ловить такое — гадание на кофейной гуще.
В гайде собирают лёгкий монитор для связки Laravel + MongoDB из трех частей:
— middleware замеряет общую длительность HTTP-запроса;
— класс, реализующий CommandSubscriber из MongoDB PHP driver, ловит события commandStarted / commandSucceeded / commandFailed и считает длительность каждой команды;
— метрики собираются в QueryMonitorService и в конце реквеста сбрасываются в коллекцию performance_logs.
Ключевое → подписка регистрируется один раз в boot() провайдера:
use function MongoDB\Driver\Monitoring\addSubscriber;
public function boot(): void
{
addSubscriber(new MongoCommandSubscriber());
}
Дальше драйвер сам отдаёт операцию (find, aggregate, insert), коллекцию и тайминг, без правок прикладного кода. Запросы дольше порога помечаются is_slow.
Чтобы коллекция логов не разрасталась до неприличия, навешивают TTL-индекс на created_at с expireAfterSeconds: 604800 (неделя). Mongo сам подметает старьё.
Библиотека пхпшника
#how_to
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Memento — это
Простыми словами:
▪️ Когда использовать
—
—
—
▪️ Memento vs Command
— Command:
— Memento:
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🔥1
Я сам использую несколько ИИ-агентов, расчехлять каменный топор не предлагаю.
Но смотрю, во что превращается «просто опиши интент, а код появится». PR на 600 строк, который разраб не может объяснить на ревью. Тесты, которые проверяют, что мок вернул то, что в него замокали. «Починили» баг, а прилетело ещё два, потому что никто не читал, что там нагенерилось.
Сгенерить за минуту и разгребать месяц — это не 10x к производительности. AI это джун с бесконечной скоростью и нулевым контекстом бизнеса. Джуну ревьюишь каждую строку, а с ИИ часто выключают голову, потому что «модель же умная».
Vibe coding — это новый уровень абстракции или мы растим поколение, которое не умеет даже дебажить?
Please open Telegram to view this post
VIEW IN TELEGRAM
💯5👍2🔥1🥱1
🦾🧠🏋️ Качаем мозги к лету!
Все готовятся к пляжному сезону, а мы предлагаем прокачать хард-скилы, чтобы забрать крутой оффер, строить продукты будущего иработать из любой точки мира 😎
⚡️ Распродажа @proglib_academy: забирайте самые актуальные образовательные треки по сниженным ценам!
➡️ Разработка AI-агентов — от 49 000 ₽ (вместо 69 000 ₽).
➡️ Курс AgentOps — 129 000 ₽ (вместо 149 000 ₽).
➡️ Математика для разработки AI-моделей — 23 990 ₽ (вместо 31 990 ₽).
➡️ ML для старта в Data Science — 28 990 ₽ (вместо 38 990 ₽).
Почему мы?
⭐️ Учим для продакшена. Наши программы заточены под реальные задачи бизнеса: как не слить бюджет на токены, как заставить LLM работать стабильно в бэкенде и как выстроить отказоустойчивую архитектуру.
⭐️ Спикеры — суровые практики. Вы будете перенимать опыт у действующих AI-архитекторов, тимлидов и ML-инженеров из топовых IT-компаний.
⭐️ Комплексный подход. Мы даем как мощный математический фундамент для понимания моделей «под капотом», так и передовые инструменты оркестрации агентов.
⭐️ Много практики и фидбека. Вебинары, десятки практических заданий и живое общение с экспертами в чате Telegram на протяжении всего обучения.
⏳ Оставляйте заявку и бронируйте место со СКИДКОЙ 40%
Все готовятся к пляжному сезону, а мы предлагаем прокачать хард-скилы, чтобы забрать крутой оффер, строить продукты будущего и
⚡️ Распродажа @proglib_academy: забирайте самые актуальные образовательные треки по сниженным ценам!
Почему мы?
⏳ Оставляйте заявку и бронируйте место со СКИДКОЙ 40%
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Серверная реактивность: Livewire и три его собрата
Идея одна: рендерить HTML на сервере и гнать обновления клиенту, убрав фронтенд-фреймворк из уравнения. Реализаций четыре, и разница между ними архитектурная:
🔹 Фреймворк Phoenix LiveView (Elixir)
Держит состояние в BEAM-процессе на WebSocket, вычисляя диффы на уровне выражений в шаблоне.
🔹 Инструмент Rails Hotwire
Работает без состояния, перегоняя готовые куски HTML через обычный HTTP, что грубо, но покрывает 80% задач.
🔹 Пакет Laravel Livewire
Выступает ближайшим клоном LiveView на PHP, где состояние сериализуется в JSON и путешествует туда-обратно при каждом запросе (хотя с Laravel Reverb доступен WebSocket).
🔹 Экспериментальные проекты Go Live и HLive
Используют горутины на WebSocket, имеют минимальную экосистему и годятся лишь для внутренних дашбордов.
Выбор тут не про «что быстрее», а про экосистему и команду. Для Laravel-стека Livewire — единственный вариант, не требующий смены языка.
🔗 Читать оригинал
Библиотека пхпшника
Идея одна: рендерить HTML на сервере и гнать обновления клиенту, убрав фронтенд-фреймворк из уравнения. Реализаций четыре, и разница между ними архитектурная:
🔹 Фреймворк Phoenix LiveView (Elixir)
Держит состояние в BEAM-процессе на WebSocket, вычисляя диффы на уровне выражений в шаблоне.
🔹 Инструмент Rails Hotwire
Работает без состояния, перегоняя готовые куски HTML через обычный HTTP, что грубо, но покрывает 80% задач.
🔹 Пакет Laravel Livewire
Выступает ближайшим клоном LiveView на PHP, где состояние сериализуется в JSON и путешествует туда-обратно при каждом запросе (хотя с Laravel Reverb доступен WebSocket).
🔹 Экспериментальные проекты Go Live и HLive
Используют горутины на WebSocket, имеют минимальную экосистему и годятся лишь для внутренних дашбордов.
Выбор тут не про «что быстрее», а про экосистему и команду. Для Laravel-стека Livewire — единственный вариант, не требующий смены языка.
Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
⚡️ Последний шанс забрать курсы со СКИДКОЙ 40%! Прокачайте свой мозг правильно
До конца акции вы можете воспользоваться специальными ценами на самые востребованные IT-направления. Круто и выгодно прокачать свои скиллы,чтобы получить оффер, уехать на Бали и больше не быть онлайн 😎
➡️ Разработка AI-агентов — от 49 000 ₽ (вместо 69 000 ₽)
Курс про контролируемую разработку ИИ-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — только практическая работа.
➡️ Курс AgentOps — 129 000 ₽ (вместо 149 000 ₽)
Профессиональный трек для разработчиков и LLM инженеров о том, как правильно внедрять AI-логику в бэкенд и сохранять железную стабильность сервиса.
➡️ Математика для Data Science — от 29 990 ₽ (вместо 39 990 ₽)
Вы научитесь решать сложные математические задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе. Отличная база для мощного старта в DS.
➡️ Курс Специалист по ИИ — 89 000 ₽ (вместо 113 900 ₽)
Комплексная программа для получения профессии в сфере ИИ с нуля. За 8 месяцев вы соберете сильное портфолио из 5 реальных проектов и дипломной работы.
➡️ Архитектуры и шаблоны проектирования — 27 990 ₽ (вместо 37 900 ₽)
Интенсив для разработчиков, который поможет освоить основные паттерны проектирования и прокачать навыки архитектора программного обеспечения.
🌸 Выбирайте направление, оставляйте заявку на сайте распродажи, и наш менеджер подробно вас проконсультирует
До конца акции вы можете воспользоваться специальными ценами на самые востребованные IT-направления. Круто и выгодно прокачать свои скиллы,
Курс про контролируемую разработку ИИ-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — только практическая работа.
Профессиональный трек для разработчиков и LLM инженеров о том, как правильно внедрять AI-логику в бэкенд и сохранять железную стабильность сервиса.
Вы научитесь решать сложные математические задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе. Отличная база для мощного старта в DS.
Комплексная программа для получения профессии в сфере ИИ с нуля. За 8 месяцев вы соберете сильное портфолио из 5 реальных проектов и дипломной работы.
Интенсив для разработчиков, который поможет освоить основные паттерны проектирования и прокачать навыки архитектора программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱2
🐳 Работа с Docker Compose
Поменяли конфиг одного сервиса и не хотите перезапускать весь стек из 10 контейнеров? docker compose up -d --no-deps service-name пересоздаст только указанный сервис.
🔹 Зачем это нужно
— Перезапуск одного сервиса вместо всего стека экономит минуты на тяжёлых проектах.
— --no-deps не трогает зависимости, так что БД и Redis останутся на месте.
— -d запускает в фоне, терминал свободен для другой работы.
🔹 Как использовать
— Пересоздать один сервис:
— Пересобрать и запустить:
— Посмотреть логи только одного:
— Рестарт без пересоздания:
— Масштабировать:
💡 restart не подхватывает изменения в docker-compose.yml или Dockerfile, для этого нужен up -d. Если обновили env-переменные или порты — только up -d применит изменения.
Библиотека пхпшника
Поменяли конфиг одного сервиса и не хотите перезапускать весь стек из 10 контейнеров? docker compose up -d --no-deps service-name пересоздаст только указанный сервис.
🔹 Зачем это нужно
— Перезапуск одного сервиса вместо всего стека экономит минуты на тяжёлых проектах.
— --no-deps не трогает зависимости, так что БД и Redis останутся на месте.
— -d запускает в фоне, терминал свободен для другой работы.
🔹 Как использовать
— Пересоздать один сервис:
docker compose up -d --no-deps api— Пересобрать и запустить:
docker compose up -d --no-deps --build api— Посмотреть логи только одного:
docker compose logs -f api— Рестарт без пересоздания:
docker compose restart api— Масштабировать:
docker compose up -d --scale worker=3Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
Forwarded from Библиотека задач по PHP | тесты, код, задания
Что возвращает метод Collection::pluck('name')?
Anonymous Quiz
12%
Первый элемент с ключом name
76%
Коллекцию всех значений поля name
6%
Количество элементов с полем name
6%
Boolean — есть ли поле name
❤1👍1🔥1
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps!
— Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов
— Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем
— Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена
— Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation
— Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры
Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.
👉 Изучить обновленную программу AgentOps и занять место.
— Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов
— Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем
— Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена
— Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation
— Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры
Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.
👉 Изучить обновленную программу AgentOps и занять место.
🧠 Распознавание лиц на чистом PHP
Если задача пилить аттенданс или авторизацию по лицу прямо внутри Laravel-монолита, тащить Python-микросервис избыточно. Расширение php-dlib подгружает модели Dlib и отдаёт 128-мерные эмбеддинги без посредников.
Пайплайн на четыре шага
— ставим расширение из релизов mailmug/php-dlib и прописываем путь в php.ini;
— качаем три .dat-модели (детектор CNN, 5-point landmarks, ResNet recognition);
— на этапе enroll прогоняем фото через детектор → ландмарки → дескриптор, сериализуем в faces.db;
— на recognize считаем евклидово расстояние, порог 0.6 отсекает чужих.
Ядро энролла:
Ландмарки тут не для красоты: без выравнивания по глазам дескриптор плывёт, и матчинг ловит ложные срабатывания на похожих лицах.
📂 Скачать исходники
Библиотека пхпшника
Если задача пилить аттенданс или авторизацию по лицу прямо внутри Laravel-монолита, тащить Python-микросервис избыточно. Расширение php-dlib подгружает модели Dlib и отдаёт 128-мерные эмбеддинги без посредников.
Пайплайн на четыре шага
— ставим расширение из релизов mailmug/php-dlib и прописываем путь в php.ini;
— качаем три .dat-модели (детектор CNN, 5-point landmarks, ResNet recognition);
— на этапе enroll прогоняем фото через детектор → ландмарки → дескриптор, сериализуем в faces.db;
— на recognize считаем евклидово расстояние, порог 0.6 отсекает чужих.
Ядро энролла:
$faces = $fd->detect($img);
$landmarks = $fld->detect($img, $faces[0]);
$descriptor = $fr->computeDescriptor($img, $landmarks);
$database[$name] = $descriptor;
Ландмарки тут не для красоты: без выравнивания по глазам дескриптор плывёт, и матчинг ловит ложные срабатывания на похожих лицах.
📂 Скачать исходники
Библиотека пхпшника
🔥5❤1👍1🌚1