🛰️ How to: настроить Laravel Telescope для отладки и мониторинга
Хотите видеть, что происходит внутри вашего Laravel-приложения — какие запросы приходят, какие SQL выполняются, какие ошибки падают?
Laravel Telescope — это ваш бортовой мониторинг в одном дашборде.
🧭 Что можно смотреть
🔸 Requests — все HTTP-запросы
🔸 Queries — SQL и время выполнения
🔸 Exceptions — полные стектрейсы ошибок
🔸 Jobs, Cache, Mail, Logs — всё, что делает приложение за кадром
👉 Читать статью
Библиотека пхпшника
Хотите видеть, что происходит внутри вашего Laravel-приложения — какие запросы приходят, какие SQL выполняются, какие ошибки падают?
Laravel Telescope — это ваш бортовой мониторинг в одном дашборде.
🧭 Что можно смотреть
🔸 Requests — все HTTP-запросы
🔸 Queries — SQL и время выполнения
🔸 Exceptions — полные стектрейсы ошибок
🔸 Jobs, Cache, Mail, Logs — всё, что делает приложение за кадром
👉 Читать статью
Библиотека пхпшника
👍4
«Мой первый AI-агент на базе Neuron — PHP-агентного фреймворка»
Пока одни спорят, «жив ли PHP», в экосистеме происходит нечто любопытное — появился Neuron, первый enterprise-ready фреймворк для создания AI-агентов на PHP.
Автор статьи — опытный разработчик, который, как и многие, привык к Laravel, Yii и вечному вебу. И вдруг — нейросети, агенты, LLM. Казалось бы, вся движуха где-то между Python и JavaScript. А тут — Neuron, который обещает встроить «разумных» агентов прямо в привычный PHP-проект, без костылей и микросервисов на стороне.
🧠 Что делает Neuron
Neuron — это фреймворк для оркестрации AI-агентов.
Он позволяет:
🔸 подключать языковые модели (OpenAI, Claude и др.);
🔸 определять, какие функции (инструменты) агент может вызывать — от запросов в базу до API-вызовов;
🔸 собирать workflow из нескольких агентов, где каждый решает часть задачи;
🔸 использовать stream-режим для вывода прогресса в реальном времени;
🔸 внедрять человека в цикл («human-in-the-loop»), чтобы агент мог спрашивать совета.
И всё это — на чистом PHP, через Composer и знакомый стек.
⚙️ Примеры применения
🤖 Агент для аналитики — подключается к БД, генерирует отчёты.
👕 Агент-консультант по одежде — берёт данные о погоде и выдает рекомендации.
💬 Агент поддержки — читает обращения клиентов и подсказывает ответы.
📝 SEO-агент — сам скачивает статью, анализирует её и даёт советы по улучшению.
Каждый пример показывает идею: ИИ должен не просто отвечать, а действовать осознанно — как разработчик, у которого есть инструменты и план.
🚀 Почему это важно
До сих пор PHP-мир оставался «в стороне» от AI-революции.
Neuron может это изменить — дать возможность:
🔹 подключать LLM без внешних сервисов на Python;
🔹 строить цепочки агентов, которые работают внутри одного приложения;
🔹 наблюдать и отлаживать их поведение через Inspector.dev.
🔗 Хабр
Библиотека пхпшника
Пока одни спорят, «жив ли PHP», в экосистеме происходит нечто любопытное — появился Neuron, первый enterprise-ready фреймворк для создания AI-агентов на PHP.
Автор статьи — опытный разработчик, который, как и многие, привык к Laravel, Yii и вечному вебу. И вдруг — нейросети, агенты, LLM. Казалось бы, вся движуха где-то между Python и JavaScript. А тут — Neuron, который обещает встроить «разумных» агентов прямо в привычный PHP-проект, без костылей и микросервисов на стороне.
🧠 Что делает Neuron
Neuron — это фреймворк для оркестрации AI-агентов.
Он позволяет:
🔸 подключать языковые модели (OpenAI, Claude и др.);
🔸 определять, какие функции (инструменты) агент может вызывать — от запросов в базу до API-вызовов;
🔸 собирать workflow из нескольких агентов, где каждый решает часть задачи;
🔸 использовать stream-режим для вывода прогресса в реальном времени;
🔸 внедрять человека в цикл («human-in-the-loop»), чтобы агент мог спрашивать совета.
И всё это — на чистом PHP, через Composer и знакомый стек.
⚙️ Примеры применения
🤖 Агент для аналитики — подключается к БД, генерирует отчёты.
👕 Агент-консультант по одежде — берёт данные о погоде и выдает рекомендации.
💬 Агент поддержки — читает обращения клиентов и подсказывает ответы.
📝 SEO-агент — сам скачивает статью, анализирует её и даёт советы по улучшению.
Каждый пример показывает идею: ИИ должен не просто отвечать, а действовать осознанно — как разработчик, у которого есть инструменты и план.
🚀 Почему это важно
До сих пор PHP-мир оставался «в стороне» от AI-революции.
Neuron может это изменить — дать возможность:
🔹 подключать LLM без внешних сервисов на Python;
🔹 строить цепочки агентов, которые работают внутри одного приложения;
🔹 наблюдать и отлаживать их поведение через Inspector.dev.
Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11
🧠 PHP-лайфхак: короткий синтаксис массивов и оператор объединения с null
В PHP часто встречается код вроде этого 👇
Он работает, но выглядит громоздко. Современный PHP предлагает простой приём, которые делают код чище и короче.
⚡️ Null coalescing operator ??
Вместо проверки
Если ключ
Это особенно удобно при работе с конфигами, данными из API или форм.
Библиотека пхпшника
В PHP часто встречается код вроде этого 👇
$array = [];
$value = isset($data['key']) ? $data['key'] : 'default';
Он работает, но выглядит громоздко. Современный PHP предлагает простой приём, которые делают код чище и короче.
⚡️ Null coalescing operator ??
Вместо проверки
isset() можно просто написать:$value = $data['key'] ?? 'default';
Если ключ
'key' не существует или равен null, вернётся 'default'.Это особенно удобно при работе с конфигами, данными из API или форм.
Библиотека пхпшника
🥱12👍7😁4🌚2
💡 Symfony Validator: не только для форм
Большинство PHP-разработчиков используют
🔍 В статье автор показывает, как Validator помогает строить устойчивые API и гибкие правила валидации, не завязанные на базу данных.
🧩 1. DTO вместо Entity
Антипаттерн — принимать в контроллере
Лучше использовать DTO:
🔒 безопасно (нет mass assignment),
🧠 понятно (чёткий контракт API),
🧱 независимо (никакой связи с ORM).
⚙️ 2. Динамическая валидация с Group Sequences
Хочешь, чтобы обязательные поля менялись в зависимости от условий?
Используй
например, если тип аккаунта
🧬 3. Проверка вложенных структур
С
А с
🧠 4. Свои Constraints с DI
Нужна валидация с доступом к базе или API?
Создай свой
Validator в Symfony — это не просто про формы.
Это способ держать бизнес-инварианты в чистом, расширяемом и декларативном виде.
🧠 Применяйте его для DTO, API, микросервисов и любых сложных структур.
Код станет чище, а валидация — надёжнее.
👉 Читать полностью
Библиотека пхпшника
Большинство PHP-разработчиков используют
Validator в Symfony исключительно для проверки сущностей, связанных с формами. Но этот компонент — гораздо мощнее, чем просто NotBlank и Email.🔍 В статье автор показывает, как Validator помогает строить устойчивые API и гибкие правила валидации, не завязанные на базу данных.
🧩 1. DTO вместо Entity
Антипаттерн — принимать в контроллере
Entity.Лучше использовать DTO:
🔒 безопасно (нет mass assignment),
🧠 понятно (чёткий контракт API),
🧱 независимо (никакой связи с ORM).
#[Assert\NotBlank]
#[Assert\Email]
public readonly ?string $email;
⚙️ 2. Динамическая валидация с Group Sequences
Хочешь, чтобы обязательные поля менялись в зависимости от условий?
Используй
GroupSequenceProvider:например, если тип аккаунта
corporate — проверяй companyName, если individual — игнорируй.🧬 3. Проверка вложенных структур
С
#[Valid] можно валидировать коллекции DTO:
#[Assert\Valid]
public array $items = [];
А с
#[Collection] — ассоциативные массивы и JSON-payload’ы.🧠 4. Свои Constraints с DI
Нужна валидация с доступом к базе или API?
Создай свой
ConstraintValidator, инжектни EntityManager или сервис и пиши логику вроде:
if ($repository->findOneBy([$field => $value])) {
$this->context->buildViolation('Already in use')->addViolation();
}
Validator в Symfony — это не просто про формы.
Это способ держать бизнес-инварианты в чистом, расширяемом и декларативном виде.
🧠 Применяйте его для DTO, API, микросервисов и любых сложных структур.
Код станет чище, а валидация — надёжнее.
👉 Читать полностью
Библиотека пхпшника
🔥12
Инженер с 10+ годами опыта провалил интервью, потому что не смог за 45 минут решить задачу на динамическое программирование, которую не видел с универа.
Есть аргументы за решение задач не собеседовании и против.
Никто не будет решать задачки с литкода на работе, но и код с O(n²) вместо O(n log n) сто процентов положит прод под нагрузкой.
Админ один раз перенервничал и забыл как найти середину отрезка на плоскости. Это полностью заруинило ему алгоритмическую секцию.
💬 Как вы думаете — задачи на собесе это ту мач или имеют место быть? Ждём ваше мнение в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Очереди задач: простой способ пакетной обработки
Как работает очередь задач на примере создания миниатюр для видео.
Цель: после загрузки видео оно должно высветиться в виде миниатюры
Как работает очередь задач на примере создания миниатюр для видео.
Цель: после загрузки видео оно должно высветиться в виде миниатюры
👍1
🎁 И мозг прокачать, и макбук утащить!
Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Условия:
1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.
Что за курсы?
— Математика для Data Science (6 месяцев боли и просветления).
— Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.
👉 Участвовать в розыгрыше
Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Условия:
1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.
Что за курсы?
— Математика для Data Science (6 месяцев боли и просветления).
— Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.
👉 Участвовать в розыгрыше
Forwarded from Книги для программистов
Эта книга — идеальный способ перестать бояться сложных конструкций SQL и наконец понять, что делает твой запрос. Каждая глава — мини-квест с теорией, примерами и упражнениями, которые реально работают.
JOIN до аналитических функцийif-else, но с извращениями)Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
💬 Ежемесячная ветка PHP-разработчиков
Друзья, открываем новую ветку для обмена проектами, идеями и кодом.
Если вы пилите свой pet-project, боретесь с архитектурой, настраиваете CI или просто хотите услышать мнение других — делитесь здесь 👇
Что можно постить:
🧩 куски кода и архитектурные решения
🧠 вопросы по оптимизации, безопасности, тестам
🛠️ свои открытые проекты или библиотеки
💬 размышления о фреймворках, паттернах и подходах
Пусть эта ветка станет местом, где PHP-сообщество помогает друг другу расти — без токсичности, с уважением к чужому опыту и с любовью к чистому коду ❤️
👇 Делитесь своими проектами в комментариях!
Друзья, открываем новую ветку для обмена проектами, идеями и кодом.
Если вы пилите свой pet-project, боретесь с архитектурой, настраиваете CI или просто хотите услышать мнение других — делитесь здесь 👇
Что можно постить:
🧩 куски кода и архитектурные решения
🧠 вопросы по оптимизации, безопасности, тестам
🛠️ свои открытые проекты или библиотеки
💬 размышления о фреймворках, паттернах и подходах
Пусть эта ветка станет местом, где PHP-сообщество помогает друг другу расти — без токсичности, с уважением к чужому опыту и с любовью к чистому коду ❤️
👇 Делитесь своими проектами в комментариях!
👍6
⌨️ Топ-вакансий по PHP за неделю
Backend разработчик (Middle/Senior) — от 180 000 до 290 000 ₽, Удалёнка (Москва)
PHP разработчик — 150 000 — 300 000₽, Офис (Казань)
PHP-разработчик — от 270 000 ₽, Офис (Новосибирск)
Senior PHP Developer (Symfony) — Удалёнка (Санкт-Петербург)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Backend разработчик (Middle/Senior) — от 180 000 до 290 000 ₽, Удалёнка (Москва)
PHP разработчик — 150 000 — 300 000₽, Офис (Казань)
PHP-разработчик — от 270 000 ₽, Офис (Новосибирск)
Senior PHP Developer (Symfony) — Удалёнка (Санкт-Петербург)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
🌚1
💻 ВАЖНО: макбук ещё не забрали!
Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD).
Что нужно для участия?
— Берёшь любой курс Академии до 15 ноября.
— Проходишь хотя бы 2 недели обучения (можно за два дня ).
— Пишешь куратору #розыгрыш. Всё — ты в игре!
Что за курсы?
▫️Алгоритмы и структуры данных — если хочешь готовиться к собесам в Яндекс, FAANG и не сидеть на джуне вечно.
▫️Архитектуры и шаблоны проектирования — учат думать как senior, а не просто писать код.
▫️ Python, математика для DS, основы IT и другие темы — можно стартовать с нуля или усилить то, что уже знаешь.
👉 Влетай, не думай!
Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD).
Что нужно для участия?
— Берёшь любой курс Академии до 15 ноября.
— Проходишь хотя бы 2 недели обучения (
— Пишешь куратору #розыгрыш. Всё — ты в игре!
Что за курсы?
▫️Алгоритмы и структуры данных — если хочешь готовиться к собесам в Яндекс, FAANG и не сидеть на джуне вечно.
▫️Архитектуры и шаблоны проектирования — учат думать как senior, а не просто писать код.
▫️ Python, математика для DS, основы IT и другие темы — можно стартовать с нуля или усилить то, что уже знаешь.
👉 Влетай, не думай!
🌚2
«Как я добавил систему рекомендаций контента в легаси-проект на PHP 7.2»
Проект на легаси PHP, обновить времени нет, а бизнес требует «сделайте поиск как у ChatGPT». Знакомо?
Так вот — автор статьи столкнулся именно с этим. Нужно было внедрить векторный поиск и рекомендательную систему, но проект жил на старом PHP 7.2, где современных клиентов под Qdrant просто нет.
💡 Решение? Написать свой клиент под старую версию.
И теперь даже на PHP 7.2 можно:
— реализовать умный поиск по смыслу, а не по словам;
— строить рекомендации для товаров и статей;
— искать дубликаты и похожий контент;
— автоматически категоризировать тексты;
— сделать полноценный RAG-модуль поддержки.
📚 В основе — простая идея:
текст → вектор → поиск ближайших векторов в Qdrant.
Никакой магии, просто математика.
👉 Автор выложил готовую библиотеку и минимальный пример работы — прямо в статье.
🤖 А вы когда-нибудь внедряли AI-фичи в легаси-проекты? Расскажите в комментариях
Проект на легаси PHP, обновить времени нет, а бизнес требует «сделайте поиск как у ChatGPT». Знакомо?
Так вот — автор статьи столкнулся именно с этим. Нужно было внедрить векторный поиск и рекомендательную систему, но проект жил на старом PHP 7.2, где современных клиентов под Qdrant просто нет.
💡 Решение? Написать свой клиент под старую версию.
И теперь даже на PHP 7.2 можно:
— реализовать умный поиск по смыслу, а не по словам;
— строить рекомендации для товаров и статей;
— искать дубликаты и похожий контент;
— автоматически категоризировать тексты;
— сделать полноценный RAG-модуль поддержки.
📚 В основе — простая идея:
текст → вектор → поиск ближайших векторов в Qdrant.
Никакой магии, просто математика.
👉 Автор выложил готовую библиотеку и минимальный пример работы — прямо в статье.
🤖 А вы когда-нибудь внедряли AI-фичи в легаси-проекты? Расскажите в комментариях
👍5👏1😁1
Forwarded from Библиотека задач по PHP | тесты, код, задания
💻 Хочешь MacBook Pro? Просто начни учиться!
Да-да, вы не ослышались: Proglib.academy дарит макбук за учёбу!
Всё просто:
— купи любой курс Академии до 15 ноября;
— пройди 2 недели обучения (можно за два дня );
— напиши куратору в чате курса хэштег #розыгрыш.
📚 Выбирай свой курс:
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «AI-агенты» или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
👉 Участвовать в розыгрыше
Да-да, вы не ослышались: Proglib.academy дарит макбук за учёбу!
Всё просто:
— купи любой курс Академии до 15 ноября;
— пройди 2 недели обучения (
— напиши куратору в чате курса хэштег #розыгрыш.
📚 Выбирай свой курс:
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «AI-агенты» или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
👉 Участвовать в розыгрыше
🌚1
🧩 Расширенные паттерны для Symfony HttpClient: потоковая передача, ретраи и отказоустойчивость
Если вы хоть раз писали
Для простых случаев этого хватает.
Но реальность другая:
– 100 API-эндпоинтов нужно получить за секунды, а не минуты
– JSON на 500 МБ не должен взорвать память
– API периодически “флапает”, а приложение должно выжить
– токен OAuth2 живёт 60 минут — и должен обновляться сам
💡 И тут выясняется, что
⚡️ 1. Конкурентные запросы через stream()
Обычный
10 запросов × 300 мс = 3 сек.
С
👉 10 запросов за ~300 мс вместо 3 секунд.
🧠 2. Потоковый парсинг JSON (новинка Symfony 7.3)
🧱 3. Надёжность: Retry + Circuit Breaker
А если API “упало” — кастомный
🔐 4. Автоматический OAuth2
Больше никаких ручных проверок
🧪 5. Тестирование без сети
Тесты становятся детерминированными и быстрыми.
🔗 Ссылка на статью
🐸 Библиотека пхпшника
Если вы хоть раз писали
$client->request('GET', ...) и $response->toArray(), значит, уже пользовались symfony/http-client.Для простых случаев этого хватает.
Но реальность другая:
– 100 API-эндпоинтов нужно получить за секунды, а не минуты
– JSON на 500 МБ не должен взорвать память
– API периодически “флапает”, а приложение должно выжить
– токен OAuth2 живёт 60 минут — и должен обновляться сам
💡 И тут выясняется, что
HttpClient — не просто обёртка над curl, а мощный инструмент для сложных систем.⚡️ 1. Конкурентные запросы через stream()
Обычный
foreach делает запросы последовательно:10 запросов × 300 мс = 3 сек.
С
stream() всё иначе — запросы идут параллельно, и общее время ≈ самому медленному из них.foreach ($productIds as $id) {
$responses[$id] = $client->request('GET', "products/$id");
}
foreach ($client->stream($responses) as $r => $chunk) {
if ($chunk->isLast()) $prices[] = $r->toArray()['price'];
}👉 10 запросов за ~300 мс вместо 3 секунд.
🧠 2. Потоковый парсинг JSON (новинка Symfony 7.3)
symfony/json-streamer позволяет читать огромные JSON-файлы без загрузки их целиком в память.composer require symfony/json-streamer
foreach ($streamReader->read($response, Type::list(Type::object(ProductDto::class))) as $product) {
// обработка 2 млн объектов без OutOfMemory
}🧱 3. Надёжность: Retry + Circuit Breaker
RetryableHttpClient сам повторит запросы при 503/504.А если API “упало” — кастомный
CircuitBreakerClient отключает обращения на 60 секунд, чтобы не “молотить мёртвый сервис”.🔐 4. Автоматический OAuth2
AccessTokenHttpClient берёт токен из кэша и обновляет его по необходимости.Больше никаких ручных проверок
if ($token->isExpired()).🧪 5. Тестирование без сети
MockHttpClient с генератором позволяет точно проверить последовательность и данные запросов.Тесты становятся детерминированными и быстрыми.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
symfony/polyfill-intl-idn
Что это
Это полифил от Symfony Polyfill, который добавляет поддержку функций
На Packagist: пакет устанавливается как
Зачем нужен
🔸 Если ваша система работает без расширения ext-intl (или с урезанной его поддержкой), библиотека гарантирует, что вы всё равно сможете использовать функции преобразования международных доменов (IDN).
🔸 Обеспечивает кросс-версийную совместимость — особенно полезно, если код должен работать в разных окружениях, где могут быть разные версии PHP и разные расширения.
Основная функциональность
Обеспечивает функцию
Обеспечивает функцию
Установка
Можно просто добавить в проект через Composer:
Когда особенно полезна
🔹 В проектах, которые должны поддерживать работу на серверах с минимальными расширениями PHP.
🔹Когда нужно надёжно работать с доменами, содержащими не-ASCII символы (например, русские домены, домены на арабском, китайском и др.).
🔹 В библиотеках или пакетах, которые распространяются и должны работать на максимально широком диапазоне окружений.
👉 Github
Библиотека пхпшника
#инструменты
Что это
Это полифил от Symfony Polyfill, который добавляет поддержку функций
idn_to_ascii и idn_to_utf8 для версий PHP, где расширение ext‑intl может быть не установлено или не включено. На Packagist: пакет устанавливается как
symfony/polyfill-intl-idn. packagist.orgЗачем нужен
🔸 Если ваша система работает без расширения ext-intl (или с урезанной его поддержкой), библиотека гарантирует, что вы всё равно сможете использовать функции преобразования международных доменов (IDN).
🔸 Обеспечивает кросс-версийную совместимость — особенно полезно, если код должен работать в разных окружениях, где могут быть разные версии PHP и разные расширения.
Основная функциональность
Обеспечивает функцию
idn_to_ascii() — перевод домена в ASCII-представление (например, для международных доменов с нелатинскими символами). Обеспечивает функцию
idn_to_utf8() — обратный перевод из ASCII формы в UTF-8.Установка
Можно просто добавить в проект через Composer:
composer require symfony/polyfill-intl-idnКогда особенно полезна
🔹 В проектах, которые должны поддерживать работу на серверах с минимальными расширениями PHP.
🔹Когда нужно надёжно работать с доменами, содержащими не-ASCII символы (например, русские домены, домены на арабском, китайском и др.).
🔹 В библиотеках или пакетах, которые распространяются и должны работать на максимально широком диапазоне окружений.
👉 Github
Библиотека пхпшника
#инструменты
👍1