Построитель SQL запросов на основе мета-информации миграций БД
Статья представляет библиотеку Sql Query Builder, которая использует пакет версионирования shasoft/db-schema для работы с запросами к базе данных. Эта библиотека обеспечивает прямую работу с драйвером PDO и поддерживает различные команды SQL, такие как SELECT, INSERT, UPDATE, DELETE, а также операции JOIN, фильтрацию, удаление дубликатов, сортировку, группировку, агрегатные функции и ограничение выборки.
Приводятся примеры использования библиотеки для создания объекта Query Builder, указания условий фильтрации и соединения, а также выполнения запросов с учетом кэширования. Особое внимание уделяется использованию контекста таблицы для определения связей и работы с данными различных таблиц. Также обсуждаются некоторые ограничения и особенности работы библиотеки.
Статья представляет библиотеку Sql Query Builder, которая использует пакет версионирования shasoft/db-schema для работы с запросами к базе данных. Эта библиотека обеспечивает прямую работу с драйвером PDO и поддерживает различные команды SQL, такие как SELECT, INSERT, UPDATE, DELETE, а также операции JOIN, фильтрацию, удаление дубликатов, сортировку, группировку, агрегатные функции и ограничение выборки.
Приводятся примеры использования библиотеки для создания объекта Query Builder, указания условий фильтрации и соединения, а также выполнения запросов с учетом кэширования. Особое внимание уделяется использованию контекста таблицы для определения связей и работы с данными различных таблиц. Также обсуждаются некоторые ограничения и особенности работы библиотеки.
Хабр
Построитель SQL запросов на основе мета-информации миграций БД
В век когда ORM шагает по планете обычный построитель запросов выглядит откатом назад. Однако тут есть нюанс — Sql Query Builder использует пакет версионирования shasoft/db-schema и владеет всей...
👍5🤔3
Поделитесь, где вам комфортнее работается?
Anonymous Poll
29%
В офисе. Как можно работать без холиваров?
9%
Дома, в кровати. А что, есть другие варианты?
46%
Дома, за рабочим столом
1%
В кофейне
5%
Коворкинг — залог продуктивности
42%
Дома за своим рабочим местом
1%
Свой вариант (напишу в комментариях)
10%
Посмотреть результаты
Статистика версий PHP: январь 2024 г.
Регулярный обзор используемых версий PHP на основе данных, которые клиенты отправляют на packagist.org (например, когда они запускают composer update команду).
Основные моменты, охваченные в статистике, включают:
Статистика использования: В статье представлено сравнение использования версий PHP за разные периоды времени, подчеркивая постепенное снижение старых версий PHP (например, PHP 7.1) и увеличение принятия более новых версий (например, PHP 8.3).
Эволюция использования версий: Визуальные представления, такие как диаграммы, иллюстрируют тенденции в использовании версий PHP со временем, демонстрируя ускоренное принятие более новых версий PHP, таких как PHP 8.3, по сравнению с их предшественниками.
Требуемые версии: В статье анализируется минимально требуемые версии PHP для топ-1000 пакетов композитора, показывая, как выборы сделанные сами авторами пакетов влияют на требования к версиям PHP для проектов, использующих эти пакеты.
Регулярный обзор используемых версий PHP на основе данных, которые клиенты отправляют на packagist.org (например, когда они запускают composer update команду).
Основные моменты, охваченные в статистике, включают:
Статистика использования: В статье представлено сравнение использования версий PHP за разные периоды времени, подчеркивая постепенное снижение старых версий PHP (например, PHP 7.1) и увеличение принятия более новых версий (например, PHP 8.3).
Эволюция использования версий: Визуальные представления, такие как диаграммы, иллюстрируют тенденции в использовании версий PHP со временем, демонстрируя ускоренное принятие более новых версий PHP, таких как PHP 8.3, по сравнению с их предшественниками.
Требуемые версии: В статье анализируется минимально требуемые версии PHP для топ-1000 пакетов композитора, показывая, как выборы сделанные сами авторами пакетов влияют на требования к версиям PHP для проектов, использующих эти пакеты.
👍10🤔3❤1
#дайджест новостей по PHP за неделю:
🔎Загрузите более 1500 шрифтов Google в свой проект Laravel. — Laravel Webfonts — это пакет, который позволяет вам легко загружать, устанавливать и предварительно загружать более 1500 шрифтов Google локально в ваш проект Laravel.
🔎Выпущена Symfony 7.0.3 — Вот список наиболее важных изменений с версии 7.0.2.
🔎Laravel 10.42 — глобальные параметры по умолчанию для HTTP-клиента - На этой неделе команда Laravel выпустила версию 10.42 с глобальными параметрами по умолчанию для HTTP-клиента, правилом максимальной проверки для объекта правила пароля, строкой помощник по развертыванию и многое другое.
🔎Неделя Symfony #891 (22–28 января 2024 г.)
🔎Загрузите более 1500 шрифтов Google в свой проект Laravel. — Laravel Webfonts — это пакет, который позволяет вам легко загружать, устанавливать и предварительно загружать более 1500 шрифтов Google локально в ваш проект Laravel.
🔎Выпущена Symfony 7.0.3 — Вот список наиболее важных изменений с версии 7.0.2.
🔎Laravel 10.42 — глобальные параметры по умолчанию для HTTP-клиента - На этой неделе команда Laravel выпустила версию 10.42 с глобальными параметрами по умолчанию для HTTP-клиента, правилом максимальной проверки для объекта правила пароля, строкой помощник по развертыванию и многое другое.
🔎Неделя Symfony #891 (22–28 января 2024 г.)
👍2❤1🔥1
Оптимизация ответов API в Laravel с помощью DTO
🔍 Рассмотрим процесс создания и тестирования интеграций с API в Laravel, используя DTO для отображения данных. Начнем с анализа примера ответа от API Google Books при поиске книги «The Ferryman». Затем создадим необходимые DTO для отображения основных и вложенных данных, таких как информация о книге и ссылки на изображения.✅
🛠️ Предложены методы тестирования, включая предотвращение фактических HTTP-запросов в тестах и создание помощников для генерации фальшивых ответов от API. Каждый этап разработки и тестирования иллюстрируется кодом на языке PHP и тестами с использованием фреймворка Pest.
🔍 Рассмотрим процесс создания и тестирования интеграций с API в Laravel, используя DTO для отображения данных. Начнем с анализа примера ответа от API Google Books при поиске книги «The Ferryman». Затем создадим необходимые DTO для отображения основных и вложенных данных, таких как информация о книге и ссылки на изображения.✅
🛠️ Предложены методы тестирования, включая предотвращение фактических HTTP-запросов в тестах и создание помощников для генерации фальшивых ответов от API. Каждый этап разработки и тестирования иллюстрируется кодом на языке PHP и тестами с использованием фреймворка Pest.
DEV Community
Streamlining API Responses in Laravel with DTOs
A comprehensive guide for creating custom Data Transfer Objects (DTOs) to enhance readability,...
👍5
Профайлинг Laravel приложений с XDebug и PHPStorm
Здесь рассказывается о важности профилирования приложений перед выпуском ресурсоемкой функциональности и о том, как часто забывают замерять время операций, которые могут превышать ожидание пользователя. Автор, Ваня, PHP-разработчик из Санкт-Петербургского электротехнического университета ЛЭТИ, делится опытом использования XDebug и PHPStorm для удобной отладки PHP-приложений и профилирования их производительности.
Также подробно описывается настройка XDebug, включая изменение режимов работы, директории сохранения профайлов и игнорирование выходных файлов в системе контроля версий. Затем автор переходит к просмотру профайла в PHPStorm, демонстрируя шаги и настройки, необходимые для анализа данных профилирования.
Автор обнаружил, что профайл XDebug не содержит необходимой информации о методе API Laravel из-за особенностей работы сервера PHP. Однако, после небольших изменений в конфигурации XDebug, таких как изменение имени выходного файла, удалось получить полезные данные профайлинга.
Здесь рассказывается о важности профилирования приложений перед выпуском ресурсоемкой функциональности и о том, как часто забывают замерять время операций, которые могут превышать ожидание пользователя. Автор, Ваня, PHP-разработчик из Санкт-Петербургского электротехнического университета ЛЭТИ, делится опытом использования XDebug и PHPStorm для удобной отладки PHP-приложений и профилирования их производительности.
Также подробно описывается настройка XDebug, включая изменение режимов работы, директории сохранения профайлов и игнорирование выходных файлов в системе контроля версий. Затем автор переходит к просмотру профайла в PHPStorm, демонстрируя шаги и настройки, необходимые для анализа данных профилирования.
Автор обнаружил, что профайл XDebug не содержит необходимой информации о методе API Laravel из-за особенностей работы сервера PHP. Однако, после небольших изменений в конфигурации XDebug, таких как изменение имени выходного файла, удалось получить полезные данные профайлинга.
Хабр
Профайлинг Laravel приложений с XDebug и PHPStorm
Привет, меня зовут Ваня, я работаю PHP-разработчиком в Санкт-Петербургском электротехническом университете ЛЭТИ. Профайлинг приложений важный этап перед релизом ресурсоёмкой фичи, везде трубят про...
⚡8🥱3
Используйте модель shouldBeStrict при запуске нового приложения Laravel.
При начале разработки нового приложения с использованием фреймворка Laravel стоит использовать метод «shouldBeStrict()». Этот метод заключается в включении строгого режима для моделей Eloquent, который обеспечивает несколько важных проверок при работе с моделями.
В частности, он выполняет следующие действия:
1️⃣Предотвращает ленивую загрузку связанных моделей, чтобы избежать избыточных запросов к базе данных.
2️⃣Предотвращает молчаливое отбрасывание атрибутов, которые не являются заполнимыми, что помогает предотвратить потенциальные проблемы безопасности.
3️⃣Предотвращает доступ к отсутствующим атрибутам моделей, что обеспечивает быстрое обнаружение опечаток или ошибок в коде.
При начале разработки нового приложения с использованием фреймворка Laravel стоит использовать метод «shouldBeStrict()». Этот метод заключается в включении строгого режима для моделей Eloquent, который обеспечивает несколько важных проверок при работе с моделями.
В частности, он выполняет следующие действия:
1️⃣Предотвращает ленивую загрузку связанных моделей, чтобы избежать избыточных запросов к базе данных.
2️⃣Предотвращает молчаливое отбрасывание атрибутов, которые не являются заполнимыми, что помогает предотвратить потенциальные проблемы безопасности.
3️⃣Предотвращает доступ к отсутствующим атрибутам моделей, что обеспечивает быстрое обнаружение опечаток или ошибок в коде.
Laravel News
Use Model shouldBeStrict when starting a new Laravel app - Laravel News
Keep your code in check as you build out a new project with the shouldBeStrict check in Laravel
👍10❤1
Контроль доступа в Symfony
🔒Контроль доступа позволяет определить права доступа к определенным частям приложения, ограничивая доступ для пользователей без необходимых разрешений.
🛡️Для реализации контроля доступа в Symfony проектах используются два основных подхода:
1️⃣Symfony Firewall: это начальный уровень безопасности маршрутов, добавляющий глобальные правила для всех маршрутов или определенных групп маршрутов. Это позволяет определить, какие URL-адреса требуют проверки безопасности и какие IP-адреса можно добавить в белый список для определенных конечных точек.
2️⃣Специфический контроль доступа для каждого маршрута: это более гибкий подход, позволяющий непосредственно определить правила доступа для каждого маршрута. Это особенно полезно для обработки более сложных правил доступа или для непосредственного отображения контроля доступа в соответствующих функциях.
🛠️ Инструменты и библиотеки для реализации контроля доступа:
ACCENT для проектов с API Platform.
Создание собственного скрипта для проверки контроля доступа к маршрутам.
🔍 Обеспечение безопасности новых маршрутов:
Включение скрипта проверки контроля доступа в непрерывную интеграцию (CI) проекта.
Использование git pre-commit или pre-push хуков.
🔒Контроль доступа позволяет определить права доступа к определенным частям приложения, ограничивая доступ для пользователей без необходимых разрешений.
🛡️Для реализации контроля доступа в Symfony проектах используются два основных подхода:
1️⃣Symfony Firewall: это начальный уровень безопасности маршрутов, добавляющий глобальные правила для всех маршрутов или определенных групп маршрутов. Это позволяет определить, какие URL-адреса требуют проверки безопасности и какие IP-адреса можно добавить в белый список для определенных конечных точек.
2️⃣Специфический контроль доступа для каждого маршрута: это более гибкий подход, позволяющий непосредственно определить правила доступа для каждого маршрута. Это особенно полезно для обработки более сложных правил доступа или для непосредственного отображения контроля доступа в соответствующих функциях.
🛠️ Инструменты и библиотеки для реализации контроля доступа:
ACCENT для проектов с API Platform.
Создание собственного скрипта для проверки контроля доступа к маршрутам.
🔍 Обеспечение безопасности новых маршрутов:
Включение скрипта проверки контроля доступа в непрерывную интеграцию (CI) проекта.
Использование git pre-commit или pre-push хуков.
DEV Community
How to ensure that all the routes on my Symfony app have access control
TL;DR Effective access control involves both Symfony's firewall and specific control on each...
👍1
Видео: Запуск Laravel в подкаталоге с Nginx
Настройка Nginx таким образом, что Laravel приложение работает в подкаталоге. Это полезно, если у вас есть несколько установок Laravel или если у вас есть второе приложение Laravel, запущенное внутри какого-то подкаталога на вашем сервере.
Например, если ваш основной домен — example.com, а у вас есть второе Laravel приложение, которое вы хотите развернуть по адресу example.com/subdirectory, то с помощью этой конфигурации Nginx вы можете настроить сервер так, чтобы обрабатывать запросы к этому подкаталогу с использованием вашего второго Laravel приложения.
Настройка Nginx таким образом, что Laravel приложение работает в подкаталоге. Это полезно, если у вас есть несколько установок Laravel или если у вас есть второе приложение Laravel, запущенное внутри какого-то подкаталога на вашем сервере.
Например, если ваш основной домен — example.com, а у вас есть второе Laravel приложение, которое вы хотите развернуть по адресу example.com/subdirectory, то с помощью этой конфигурации Nginx вы можете настроить сервер так, чтобы обрабатывать запросы к этому подкаталогу с использованием вашего второго Laravel приложения.
YouTube
Run Laravel in a subdirectory with Nginx (full, working config)
We get Laravel working in a subdirectory, using Nginx configuration. This is great for multiple Laravel installations, or when you just have a second Laravel running inside of any subdirectory.
The Laravel code base is not literally in a subdirectory of…
The Laravel code base is not literally in a subdirectory of…
👍7🥱1
Возможности метода цепочки
Метод цепочки (Method chaining) — это техника программирования, которая позволяет вызывать несколько методов объекта в одном операторе. В PHP это достигается путем возврата объекта ($this) из методов, что позволяет последующие вызовы. Метод цепочки улучшает читаемость и эффективность кода. Преимущества включают краткость, читаемость, создание плавных интерфейсов и уменьшение временных переменных. Практические применения включают конфигурацию, построение запросов к базе данных и создание Fluent API. Необходимо избегать чрезмерного использования и комплексности. Использование метода цепочки может значительно улучшить читаемость и поддерживаемость кода на PHP, делая его более выразительным и понятным
Метод цепочки (Method chaining) — это техника программирования, которая позволяет вызывать несколько методов объекта в одном операторе. В PHP это достигается путем возврата объекта ($this) из методов, что позволяет последующие вызовы. Метод цепочки улучшает читаемость и эффективность кода. Преимущества включают краткость, читаемость, создание плавных интерфейсов и уменьшение временных переменных. Практические применения включают конфигурацию, построение запросов к базе данных и создание Fluent API. Необходимо избегать чрезмерного использования и комплексности. Использование метода цепочки может значительно улучшить читаемость и поддерживаемость кода на PHP, делая его более выразительным и понятным
DEV Community
Unleashing the Power of Method Chaining in PHP
In programming, readability and efficiency are essential. Method chaining is a sophisticated feature...
🥱8👍3❤1👾1
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️PHP-программист
Москва. Флюид-Лайн — изготовление и поставка промышленного оборудования
Подробнее
▪️Junior - программист
Казань, SMART-SHOP — поставки электротехнической продукции и оборудования
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️Web-программист
Тула. Contactgroup — продвижение и разработка сайтов
Подробнее
▪️PHP разработчик
Самара, Avenue Media — разработка цифровых продуктов
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Full Stack PHP Developer
Удаленка. (Офис в Нью-Йорке). Rx2Go — логистическая компания
Подробнее
▪️PHP-разработчик
Удаленка. (Офис в Москве). MODESTO FLOWERS — разработка ПО
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️PHP-программист
Москва. Флюид-Лайн — изготовление и поставка промышленного оборудования
Подробнее
▪️Junior - программист
Казань, SMART-SHOP — поставки электротехнической продукции и оборудования
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️Web-программист
Тула. Contactgroup — продвижение и разработка сайтов
Подробнее
▪️PHP разработчик
Самара, Avenue Media — разработка цифровых продуктов
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Full Stack PHP Developer
Удаленка. (Офис в Нью-Йорке). Rx2Go — логистическая компания
Подробнее
▪️PHP-разработчик
Удаленка. (Офис в Москве). MODESTO FLOWERS — разработка ПО
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
hh.ru
Вакансия PHP-программист (Junior) работа в офисе в Москве, работа в компании Флюид-Лайн (вакансия в архиве c 3 марта 2024)
Зарплата: не указана. Москва. Требуемый опыт: не требуется. Полная занятость. Дата публикации: 29.02.2024.
🥱9❤3
Keycode Event Helper
Вспомогательный инструмент, который позволяет легко просматривать информацию о нажатиях клавиш внутри событий JavaScript.
Вспомогательный инструмент, который позволяет легко просматривать информацию о нажатиях клавиш внутри событий JavaScript.
ryangjchandler.co.uk
Keycode Event Helper – Ryan Chandler
Exploring software development with PHP, JavaScript, Rust, and beyond.
👍2🎉1
Что делает функция «unlink»?
В PHP функция unlink() используется для удаления файла из файловой системы. Она принимает единственный параметр — путь к файлу, который вы хотите удалить. После вызова unlink() попытается удалить указанный файл из файловой системы. В случае успешного выполнения файл будет удален безвозвратно.
Код из примера проверяет, существует ли файл, и если да, то пытается удалить его с помощью unlink(). В случае успешного удаления выводится «Файл успешно удален.»; в противном случае выводится «Ошибка при удалении файла.». Если файл не существует, выводится «Файл не существует.».
#вопросы_с_собеседований
В PHP функция unlink() используется для удаления файла из файловой системы. Она принимает единственный параметр — путь к файлу, который вы хотите удалить. После вызова unlink() попытается удалить указанный файл из файловой системы. В случае успешного выполнения файл будет удален безвозвратно.
Код из примера проверяет, существует ли файл, и если да, то пытается удалить его с помощью unlink(). В случае успешного удаления выводится «Файл успешно удален.»; в противном случае выводится «Ошибка при удалении файла.». Если файл не существует, выводится «Файл не существует.».
#вопросы_с_собеседований
❤6😁3👍2
Сегодня мы рассмотрим использование буферизации вывода (Output Buffering, OB) в PHP и её нюансы. Буферизация вывода предоставляет удобные инструменты для работы с выводом данных, но может быть сложной для отладки.
Основные моменты:
Преимущества использования буферов: Они могут быть полезны для агрегации вывода из различных источников, обработки вывода третьестороннего кода, повторного использования вывода для различных целей.
Проблемы с буферами: Необходимость внимательного управления вложенными буферами, проблемы с памятью при обработке больших объемов данных, возможные конфликты при использовании нескольких буферов.
Ошибка «Headers already sent»: Объясняется, как обработка вывода с помощью буферов может предотвратить ошибки с отправкой заголовков до начала вывода данных.
Неявная и явная буферизация: Объясняется, что буферизация вывода включена по умолчанию, но может быть отключена в конфигурации сервера. Также разъясняется, как работает вложенная буферизация.
Осторожность при использовании: Рекомендуется быть осторожным с использованием нескольких уровней буферизации из-за возможных проблем с обработкой ошибок и неожиданных поведений.
Ограничения буфера: Объясняется, что размер буфера ограничен, и его переполнение может привести к потере управления над выводом.
Ошибки при использовании обработчиков буфера: Предостережение о том, что использование функции ob_start() внутри обработчиков буфера может вызвать ошибки.
Основные моменты:
Преимущества использования буферов: Они могут быть полезны для агрегации вывода из различных источников, обработки вывода третьестороннего кода, повторного использования вывода для различных целей.
Проблемы с буферами: Необходимость внимательного управления вложенными буферами, проблемы с памятью при обработке больших объемов данных, возможные конфликты при использовании нескольких буферов.
Ошибка «Headers already sent»: Объясняется, как обработка вывода с помощью буферов может предотвратить ошибки с отправкой заголовков до начала вывода данных.
Неявная и явная буферизация: Объясняется, что буферизация вывода включена по умолчанию, но может быть отключена в конфигурации сервера. Также разъясняется, как работает вложенная буферизация.
Осторожность при использовании: Рекомендуется быть осторожным с использованием нескольких уровней буферизации из-за возможных проблем с обработкой ошибок и неожиданных поведений.
Ограничения буфера: Объясняется, что размер буфера ограничен, и его переполнение может привести к потере управления над выводом.
Ошибки при использовании обработчиков буфера: Предостережение о том, что использование функции ob_start() внутри обработчиков буфера может вызвать ошибки.
👍3
Logstash, Manticore, Nginx и Symfony: сбор, агрегация и быстрый поиск логов
Идея централизованного мониторинга логов долгое время витала в воздухе, и автору удалось воплотить её в жизнь. Хотя информации о Logstash с Elasticsearch достаточно, настройка с Manticore представляет собой вызов, о котором не так уж много говорят. Здесь рассказывается о настройке и потенциальных подводных камнях пакета Logstash + Manticore + Nginx + Symfony.
Установка и настройка Manticore:
Установка Manticore проста. Скачайте пакет с официального веб-сайта, установите его и настройте с помощью nano /etc/manticoresearch/manticore.conf. Обеспечьте конфигурацию Manticore так, чтобы он слушал соответствующий IP-адрес для подключения с других хостов.
Подготовка логов Nginx:
Настройте Nginx для регистрации в формате JSON для удобного парсинга. Измените формат журнала в /etc/nginx/nginx.conf и обновите блок сервера, чтобы использовать новый формат. Перезапустите Nginx, чтобы начать ведение логов в указанном формате.
Подготовка логов Symfony:
Для Symfony настройте ведение журналов через Monolog Bundle. Настройте формат логов в config/packages/monolog.yaml и создайте пользовательский сервис форматирования. Обеспечьте соответствие типов данных для совместимости с Manticore и Logstash.
Настройка Logstash:
Скачайте соответствующую версию Logstash, совместимую с Manticore. Создайте файл конфигурации Logstash (dev.conf), указав входы для логов Nginx и Symfony, фильтры для обработки логов и выходы для отправки обработанных журналов в Manticore.
Запуск Logstash:
Запустите Logstash с настроенным файлом dev.conf. Устраните любые ошибки, возникающие при запуске, обеспечивая согласованность данных и устраняя любые проблемы с соединением между Logstash и Manticore.
Вся описанная настройка успешно протестирована и развернута, предоставляя возможности централизованного мониторинга журналов. Хотя существуют готовые решения, такие как Kibana и Grafana, настраиваемые решения могут быть разработаны на основе индивидуальных потребностей и предпочтений.
Идея централизованного мониторинга логов долгое время витала в воздухе, и автору удалось воплотить её в жизнь. Хотя информации о Logstash с Elasticsearch достаточно, настройка с Manticore представляет собой вызов, о котором не так уж много говорят. Здесь рассказывается о настройке и потенциальных подводных камнях пакета Logstash + Manticore + Nginx + Symfony.
Установка и настройка Manticore:
Установка Manticore проста. Скачайте пакет с официального веб-сайта, установите его и настройте с помощью nano /etc/manticoresearch/manticore.conf. Обеспечьте конфигурацию Manticore так, чтобы он слушал соответствующий IP-адрес для подключения с других хостов.
Подготовка логов Nginx:
Настройте Nginx для регистрации в формате JSON для удобного парсинга. Измените формат журнала в /etc/nginx/nginx.conf и обновите блок сервера, чтобы использовать новый формат. Перезапустите Nginx, чтобы начать ведение логов в указанном формате.
Подготовка логов Symfony:
Для Symfony настройте ведение журналов через Monolog Bundle. Настройте формат логов в config/packages/monolog.yaml и создайте пользовательский сервис форматирования. Обеспечьте соответствие типов данных для совместимости с Manticore и Logstash.
Настройка Logstash:
Скачайте соответствующую версию Logstash, совместимую с Manticore. Создайте файл конфигурации Logstash (dev.conf), указав входы для логов Nginx и Symfony, фильтры для обработки логов и выходы для отправки обработанных журналов в Manticore.
Запуск Logstash:
Запустите Logstash с настроенным файлом dev.conf. Устраните любые ошибки, возникающие при запуске, обеспечивая согласованность данных и устраняя любые проблемы с соединением между Logstash и Manticore.
Вся описанная настройка успешно протестирована и развернута, предоставляя возможности централизованного мониторинга журналов. Хотя существуют готовые решения, такие как Kibana и Grafana, настраиваемые решения могут быть разработаны на основе индивидуальных потребностей и предпочтений.
Хабр
Logstash, Manticore, Nginx и Symfony: сбор, агрегация и быстрый поиск логов
Мысль о централизованном мониторинге логов хранилась в моей голове много лет, но реализовать ее я смог только совсем недавно. Рассказываю о настройке и подводных камнях связки Logstash + Manticore +...
👍3
🤔 Сложно ли поменять технологический стек?
Выйти на тот же уровень производительности в другом стеке в том же направлении (бэкенд/фронтенд) может занять от нескольких месяцев до полугода. Конечно, у каждого это время различается, но в любом случае оно включает:
✔️ Изучение нового языка
✔️ Ознакомление с экосистемой языка
✔️ Понимание инфраструктуры (сборка, доставка и т. д.)
💬 А вы меняли стек? Сколько времени это заняло?
Выйти на тот же уровень производительности в другом стеке в том же направлении (бэкенд/фронтенд) может занять от нескольких месяцев до полугода. Конечно, у каждого это время различается, но в любом случае оно включает:
✔️ Изучение нового языка
✔️ Ознакомление с экосистемой языка
✔️ Понимание инфраструктуры (сборка, доставка и т. д.)
💬 А вы меняли стек? Сколько времени это заняло?
👍2
Создание инструмента командной строки с помощью PHP и консоли Symfony
🛠️ Здесь рассматривается, как создать простой командный инструмент в PHP с использованием пакета Symfony Console (symfony/console).
🤔 Почему Symfony Console?
🔄 Консольные приложения — универсальный способ автоматизации и взаимодействия с системами.
📦 Symfony Console предоставляет структурированную и богатую функциональность среду разработки.
⚙️ Возможности Symfony Console:
📑 Автоматическая генерация справки: Symfony Console может автоматически создавать понятную и полезную справку для ваших команд.
🎛️ Управление вводом с опциями и аргументами: Простое определение ожидаемых вводов делает команды интуитивно понятными.
🔄 Соблюдение конвенции docopt: Гарантирует согласованный и интуитивный интерфейс для описания функциональности программы.
📝 Значения по умолчанию и валидация ввода: Помогают поддерживать гибкость и предсказуемость поведения команд.
🖥️ Удобные вспомогательные функции: Улучшают взаимодействие с пользователем и оптимизируют процесс разработки.
📂 Структурированные и основанные на классах команды: Облегчают поддержку и расширение командных приложений.
🔧 Установка и создание первой команды:
💻 Установите Symfony Console через Composer.
📂 Создайте первую команду, определив класс и методы для конфигурации и выполнения действий.
Symfony Console значительно упрощает создание командных приложений в PHP, предоставляя эффективные инструменты для автоматизации процессов и управления задачами. 🌟
🛠️ Здесь рассматривается, как создать простой командный инструмент в PHP с использованием пакета Symfony Console (symfony/console).
🤔 Почему Symfony Console?
🔄 Консольные приложения — универсальный способ автоматизации и взаимодействия с системами.
📦 Symfony Console предоставляет структурированную и богатую функциональность среду разработки.
⚙️ Возможности Symfony Console:
📑 Автоматическая генерация справки: Symfony Console может автоматически создавать понятную и полезную справку для ваших команд.
🎛️ Управление вводом с опциями и аргументами: Простое определение ожидаемых вводов делает команды интуитивно понятными.
🔄 Соблюдение конвенции docopt: Гарантирует согласованный и интуитивный интерфейс для описания функциональности программы.
📝 Значения по умолчанию и валидация ввода: Помогают поддерживать гибкость и предсказуемость поведения команд.
🖥️ Удобные вспомогательные функции: Улучшают взаимодействие с пользователем и оптимизируют процесс разработки.
📂 Структурированные и основанные на классах команды: Облегчают поддержку и расширение командных приложений.
🔧 Установка и создание первой команды:
💻 Установите Symfony Console через Composer.
📂 Создайте первую команду, определив класс и методы для конфигурации и выполнения действий.
Symfony Console значительно упрощает создание командных приложений в PHP, предоставляя эффективные инструменты для автоматизации процессов и управления задачами. 🌟
DEV Community
Building a Command Line Tool with PHP and Symfony Console
Command line tools are a powerful way to automate processes, manage tasks, and enhance your...
👍8🥱5❤3