Обработка ошибок транзакций в Laravel 12.9
https://www.harrisrafto.eu/elegant-transaction-error-handling-in-laravel/
@php_be1
https://www.harrisrafto.eu/elegant-transaction-error-handling-in-laravel/
@php_be1
Сегодня я расскажу вам о том, как настроить эффективное логирование ошибок в PHP-приложениях с помощью библиотеки Monolog.
В повседневной разработке критично не упустить важные ошибки и события, но при этом не завалить логи мусором. Monolog позволяет:
1. Группировать логи по каналам
Вы можете создавать каналы для разных частей приложения:
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$dbLogger = new Logger('database');
$dbLogger->pushHandler(new StreamHandler(__DIR__.'/logs/db.log', Logger::WARNING));
2. Использовать разные обработчики (handlers)
Отправка ошибок в файлы, на почту или в Slack:
use Monolog\Handler\NativeMailerHandler;
$emailHandler = new NativeMailerHandler('you@domain.com', 'DB Error', 'app@domain.com', Logger::ERROR);
$dbLogger->pushHandler($emailHandler);
3. Добавлять процессоры (processors)
Автоматически дополнять каждый лог юзер-агентом, IP и временем выполнения:
use Monolog\Processor\WebProcessor;
$dbLogger->pushProcessor(new WebProcessor());
4. Форматировать вывод
Пример простого форматера:
use Monolog\Formatter\LineFormatter;
$formatter = new LineFormatter("[%datetime%] %channel%.%level_name%: %message% %context%\n");
$handler->setFormatter($formatter);
🎯 Совет на практике: заведите отдельные файлы логов под разные уровни важности (INFO, WARNING, ERROR), чтобы при поиске нужных записей достаточно было открыть один файл.
❓ А как вы организуете логи в своих проектах? Делитесь опытом в комментариях!
👉 [|@php_be1]
В повседневной разработке критично не упустить важные ошибки и события, но при этом не завалить логи мусором. Monolog позволяет:
1. Группировать логи по каналам
Вы можете создавать каналы для разных частей приложения:
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$dbLogger = new Logger('database');
$dbLogger->pushHandler(new StreamHandler(__DIR__.'/logs/db.log', Logger::WARNING));
2. Использовать разные обработчики (handlers)
Отправка ошибок в файлы, на почту или в Slack:
use Monolog\Handler\NativeMailerHandler;
$emailHandler = new NativeMailerHandler('you@domain.com', 'DB Error', 'app@domain.com', Logger::ERROR);
$dbLogger->pushHandler($emailHandler);
3. Добавлять процессоры (processors)
Автоматически дополнять каждый лог юзер-агентом, IP и временем выполнения:
use Monolog\Processor\WebProcessor;
$dbLogger->pushProcessor(new WebProcessor());
4. Форматировать вывод
Пример простого форматера:
use Monolog\Formatter\LineFormatter;
$formatter = new LineFormatter("[%datetime%] %channel%.%level_name%: %message% %context%\n");
$handler->setFormatter($formatter);
🎯 Совет на практике: заведите отдельные файлы логов под разные уровни важности (INFO, WARNING, ERROR), чтобы при поиске нужных записей достаточно было открыть один файл.
❓ А как вы организуете логи в своих проектах? Делитесь опытом в комментариях!
👉 [|@php_be1]
Интегрируем внешние данные из нескольких источников с помощью DTO
https://www.luckymedia.dev/blog/how-to-integrate-multiple-external-data-sources-in-laravel-with-dtos
@php_be1
https://www.luckymedia.dev/blog/how-to-integrate-multiple-external-data-sources-in-laravel-with-dtos?utm_source=tg&utm_medium=php&utm_campaign=20052025
https://www.luckymedia.dev/blog/how-to-integrate-multiple-external-data-sources-in-laravel-with-dtos
@php_be1
https://www.luckymedia.dev/blog/how-to-integrate-multiple-external-data-sources-in-laravel-with-dtos?utm_source=tg&utm_medium=php&utm_campaign=20052025
Lucky Media
How to Integrate multiple external data sources in Laravel with DTOs - Lucky Media
For over a decade, Lucky Media has been a leading Software Development Agency in the US, based in Dallas, TX. We build custom software solutions for your business.
Сегодня расскажу вам про одну простую, но очень полезную привычку для любого PHP-разработчика — вести чек-листы по задачам прямо в коде.
Когда проект становится чуть больше "визитки", начинают скапливаться мелкие задачи: что-то подправить, где-то доделать, что-то не забыть протестировать. В итоге куча мыслей крутится в голове, а шанс что-то упустить растёт. Как я с этим борюсь?
Я просто добавляю короткие TODO-комментарии в нужных местах кода. Например:
// TODO: Проверить валидацию email после изменений
// TODO: Перевести этот блок на отдельный сервис
Каждый раз перед коммитом быстро пробегаюсь по проекту поиском по "TODO" — и вижу все свои маленькие хвосты. А когда задач становится много, использую расширения для IDE (например, "TODO Highlight" в VSCode) — и визуально сразу видно все невыполненные задачи.
Почему это работает:
* Не надо держать всё в голове.
* Любой разработчик быстро вникает в текущие проблемы кода.
* Легче планировать рефакторинг.
* Сложно забыть про важную доработку.
Советую прямо сегодня попробовать добавить пару своих TODO в код. Дай знать, пользуешься ли ты таким приёмом или предпочитаешь другие методы? Пиши в комментариях!
👉 [|@php_be1]
Когда проект становится чуть больше "визитки", начинают скапливаться мелкие задачи: что-то подправить, где-то доделать, что-то не забыть протестировать. В итоге куча мыслей крутится в голове, а шанс что-то упустить растёт. Как я с этим борюсь?
Я просто добавляю короткие TODO-комментарии в нужных местах кода. Например:
// TODO: Проверить валидацию email после изменений
// TODO: Перевести этот блок на отдельный сервис
Каждый раз перед коммитом быстро пробегаюсь по проекту поиском по "TODO" — и вижу все свои маленькие хвосты. А когда задач становится много, использую расширения для IDE (например, "TODO Highlight" в VSCode) — и визуально сразу видно все невыполненные задачи.
Почему это работает:
* Не надо держать всё в голове.
* Любой разработчик быстро вникает в текущие проблемы кода.
* Легче планировать рефакторинг.
* Сложно забыть про важную доработку.
Советую прямо сегодня попробовать добавить пару своих TODO в код. Дай знать, пользуешься ли ты таким приёмом или предпочитаешь другие методы? Пиши в комментариях!
👉 [|@php_be1]
🚀 Подборка Telegram каналов для программистов
Системное администрирование, DevOps 📌
https://t.me/bash_srv Bash Советы
https://t.me/win_sysadmin Системный Администратор Windows
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/DevLab1C 1С:Предприятие 8
https://t.me/razrab_1C 1C Разработчик
https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.me/rabota1C_rus Вакансии для программистов 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия.
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Big Data, Machine Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_be1 Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
https://t.me/Excel_lifehack
https://t.me/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Системное администрирование, DevOps 📌
https://t.me/bash_srv Bash Советы
https://t.me/win_sysadmin Системный Администратор Windows
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/DevLab1C 1С:Предприятие 8
https://t.me/razrab_1C 1C Разработчик
https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.me/rabota1C_rus Вакансии для программистов 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия.
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Big Data, Machine Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_be1 Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
https://t.me/Excel_lifehack
https://t.me/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Telegram
Bash Советы
🚀 Секреты и советы по Bash
🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале.
🔹 Автоматизация, скрипты и оптимизация работы в Linux.
🔹 Стать мастером Bash легко – просто подпишись!
💻 Прокачивай терминал вместе с нами! 👇
🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале.
🔹 Автоматизация, скрипты и оптимизация работы в Linux.
🔹 Стать мастером Bash легко – просто подпишись!
💻 Прокачивай терминал вместе с нами! 👇
Filterable — система фильтрации запросов для Laravel
https://dev.to/thavarshan/introducing-filterable-a-powerful-modular-query-filtering-system-for-laravel-2gnl
@php_be1
https://dev.to/thavarshan/introducing-filterable-a-powerful-modular-query-filtering-system-for-laravel-2gnl?utm_source=laravelnews&utm_medium=link&utm_campaign=laravelnews
https://dev.to/thavarshan/introducing-filterable-a-powerful-modular-query-filtering-system-for-laravel-2gnl
@php_be1
https://dev.to/thavarshan/introducing-filterable-a-powerful-modular-query-filtering-system-for-laravel-2gnl?utm_source=laravelnews&utm_medium=link&utm_campaign=laravelnews
DEV Community
Introducing Filterable: A Powerful, Modular Query Filtering System for Laravel
If you've built Laravel applications that require complex filtering of your Eloquent models, you've...
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Laravel Nightwatch
Веб-сервис для мониторинга Laravel-приложений. Есть бесплатный план.
https://blog.laravel.com/announcing-laravel-nightwatch
@php_be1
Веб-сервис для мониторинга Laravel-приложений. Есть бесплатный план.
https://blog.laravel.com/announcing-laravel-nightwatch
@php_be1
Позавчера Тейлор запустил новый сервис - Laravel Nightwatch (https://nightwatch.laravel.com/).
Это сервис мониторинга работы приложения.
Краткий отзыв по истечении двух дней его использования вместе с анти-спам ботом @KvedeBot:
- Выдаёт общую информацию (есть или нет проблемы), в детали не вдаётся;
- Показывает список реально вызываемых консольных команд. Так, например, я узнал о команде php artisan schedule:finish, которая была вызвана 2'120 раз за это время... И да, эта команда также лимиты жрёт;
- Можно увидеть запросы к БД, но без самих данных - только конструкт;
- От внешних запросов виден лишь адрес без тела запроса;
- По общей статистике использования видим что из 200к бесплатных эвентов за двое суток приложение сожрало 173'596 (87%), из которых 49'009 эвентов - работа с кэшем. Да, эти cache hit, read, write и т.д. тоже считаются.
Таким образом, пришёл к выводу, что это MVP продукта и, с большой долей вероятности, он действительно будет хорош, но - потом. В текущем исполнении Nightwatch, скажем так, публикует хлам из подноготной фреймворка. Моё мнение, он делает это для того, чтобы побыстрее сожрать бесплатные лимиты дабы люди оформляли подписку.
В целом, сервис прикольный, но на полном серьёзе на сервере его использовать ну такое.
@php_be1
Это сервис мониторинга работы приложения.
Краткий отзыв по истечении двух дней его использования вместе с анти-спам ботом @KvedeBot:
- Выдаёт общую информацию (есть или нет проблемы), в детали не вдаётся;
- Показывает список реально вызываемых консольных команд. Так, например, я узнал о команде php artisan schedule:finish, которая была вызвана 2'120 раз за это время... И да, эта команда также лимиты жрёт;
- Можно увидеть запросы к БД, но без самих данных - только конструкт;
- От внешних запросов виден лишь адрес без тела запроса;
- По общей статистике использования видим что из 200к бесплатных эвентов за двое суток приложение сожрало 173'596 (87%), из которых 49'009 эвентов - работа с кэшем. Да, эти cache hit, read, write и т.д. тоже считаются.
Таким образом, пришёл к выводу, что это MVP продукта и, с большой долей вероятности, он действительно будет хорош, но - потом. В текущем исполнении Nightwatch, скажем так, публикует хлам из подноготной фреймворка. Моё мнение, он делает это для того, чтобы побыстрее сожрать бесплатные лимиты дабы люди оформляли подписку.
В целом, сервис прикольный, но на полном серьёзе на сервере его использовать ну такое.
@php_be1
Laravel Nightwatch
Join the Nightwatch waitlist. First-class monitoring for Laravel. Enhance security and performance with deep insights, comprehensive logs, and tailored intelligence.