Выжимаем максимум скорости из PHP
При запуске PHP-приложений крайне важно правильно выбрать веб-сервер. Чтобы объективно оценить производительность популярных решений, было проведено тестирование не на искусственных данных, а на реальных примерах. Цель исследования заключалась не в создании рейтинга веб-серверов для PHP-приложений. Была цель показать, в каких условиях каждый сервер сможет продемонстрировать наилучшие результаты.
При запуске PHP-приложений крайне важно правильно выбрать веб-сервер. Чтобы объективно оценить производительность популярных решений, было проведено тестирование не на искусственных данных, а на реальных примерах. Цель исследования заключалась не в создании рейтинга веб-серверов для PHP-приложений. Была цель показать, в каких условиях каждый сервер сможет продемонстрировать наилучшие результаты.
Хабр
Выжимаем максимум скорости из PHP
При запуске PHP-приложений крайне важно правильно выбрать веб-сервер. Чтобы объективно оценить производительность популярных решений, мы проводили тестирование не на искусственных данных, а на...
🔥10🥱2❤1
Как работает HTTP Kernel в Symfony?
HTTP Kernel (HTTP ядро) в Symfony — это ключевой компонент фреймворка, отвечающий за обработку HTTP-запросов и формирование ответов. Он реализует шаблон проектирования Front Controller и координирует весь жизненный цикл запроса и ответа.
Основной процесс работы HTTP Kernel
1. Получение запроса:
Входной файл (index.php) получает HTTP-запрос и передаёт его в ядро.
2. Маршрутизация:
Ядро использует компонент маршрутизации, чтобы определить, какой маршрут соответствует запросу, и какой контроллер должен быть вызван.
3. Вызов контроллера:
После определения маршрута вызывается соответствующий контроллер, который обрабатывает запрос и возвращает данные.
4. Формирование ответа:
Контроллер возвращает объект ответа, который может быть модифицирован дополнительными обработчиками (например, добавление заголовков).
5. Отправка ответа:
HTTP ядро отправляет готовый ответ обратно клиенту.
6. Постобработка:
После отправки ответа запускаются задачи, которые можно выполнять асинхронно (например, логирование или очистка данных).
Основные компоненты
🔹 Запрос и ответ:
Symfony использует объект запроса, который содержит все данные HTTP-запроса (заголовки, параметры, тело и т.д.), и объект ответа, который формирует конечный HTTP-ответ.
🔹 Маршрутизация:
Компонент маршрутизации сопоставляет URL запроса с маршрутами, указанными в конфигурации, и определяет, какой контроллер и параметры использовать.
🔹 Контроллер:
Контроллер — это метод, который выполняет бизнес-логику, принимает параметры из запроса и возвращает ответ.
🔹 События:
Во время обработки запроса ядро генерирует события, на которые могут подписываться обработчики. Это позволяет изменять запрос, контроллер или ответ на разных этапах обработки.
🔹 Постобработка:
После того как ответ отправлен клиенту, могут выполняться задачи, которые не требуют немедленного завершения (например, отправка логов или очистка кэша).
Этапы обработки запроса
✔️Клиент отправляет HTTP-запрос.
✔️Ядро принимает запрос и вызывает маршрутизацию.
✔️Контроллер выполняет бизнес-логику.
✔️Генерируется HTTP-ответ.
✔️Ответ модифицируется при необходимости (например, добавляются заголовки).
✔️Готовый ответ отправляется клиенту.
✔️Выполняются завершающие задачи.
#вопросы_с_собеседований
HTTP Kernel (HTTP ядро) в Symfony — это ключевой компонент фреймворка, отвечающий за обработку HTTP-запросов и формирование ответов. Он реализует шаблон проектирования Front Controller и координирует весь жизненный цикл запроса и ответа.
Основной процесс работы HTTP Kernel
1. Получение запроса:
Входной файл (index.php) получает HTTP-запрос и передаёт его в ядро.
2. Маршрутизация:
Ядро использует компонент маршрутизации, чтобы определить, какой маршрут соответствует запросу, и какой контроллер должен быть вызван.
3. Вызов контроллера:
После определения маршрута вызывается соответствующий контроллер, который обрабатывает запрос и возвращает данные.
4. Формирование ответа:
Контроллер возвращает объект ответа, который может быть модифицирован дополнительными обработчиками (например, добавление заголовков).
5. Отправка ответа:
HTTP ядро отправляет готовый ответ обратно клиенту.
6. Постобработка:
После отправки ответа запускаются задачи, которые можно выполнять асинхронно (например, логирование или очистка данных).
Основные компоненты
🔹 Запрос и ответ:
Symfony использует объект запроса, который содержит все данные HTTP-запроса (заголовки, параметры, тело и т.д.), и объект ответа, который формирует конечный HTTP-ответ.
🔹 Маршрутизация:
Компонент маршрутизации сопоставляет URL запроса с маршрутами, указанными в конфигурации, и определяет, какой контроллер и параметры использовать.
🔹 Контроллер:
Контроллер — это метод, который выполняет бизнес-логику, принимает параметры из запроса и возвращает ответ.
🔹 События:
Во время обработки запроса ядро генерирует события, на которые могут подписываться обработчики. Это позволяет изменять запрос, контроллер или ответ на разных этапах обработки.
🔹 Постобработка:
После того как ответ отправлен клиенту, могут выполняться задачи, которые не требуют немедленного завершения (например, отправка логов или очистка кэша).
Этапы обработки запроса
✔️Клиент отправляет HTTP-запрос.
✔️Ядро принимает запрос и вызывает маршрутизацию.
✔️Контроллер выполняет бизнес-логику.
✔️Генерируется HTTP-ответ.
✔️Ответ модифицируется при необходимости (например, добавляются заголовки).
✔️Готовый ответ отправляется клиенту.
✔️Выполняются завершающие задачи.
#вопросы_с_собеседований
👍10🥰3❤1
Почему вам стоит задуматься о переходе на PHP 8.4?
В этой статье на медиуме рассматриваются основные причины, по которым вы можете захотеть обновить свои PHP-проекты до версии 8.4.
В этой статье на медиуме рассматриваются основные причины, по которым вы можете захотеть обновить свои PHP-проекты до версии 8.4.
Medium
Why You Should Consider Upgrading to PHP 8.4?
I think 8.4 is a good state of static type and other function really can do something more than a just a normal upgrade. In this article…
👍5
«Наконец я попробовал Pest для PHP и Laravel, а затем перешел на него.»
Pest — это современный инструмент для тестирования в PHP, созданный в 2021 году Нуну Мадуро, инженером Laravel. Pest быстро стал популярным благодаря своей интеграции с экосистемой Laravel и упрощению процесса тестирования. Основанный на PHPUnit, Pest сохраняет его мощь, но добавляет более удобный и лаконичный синтаксис.
Основное отличие Pest — это использование замыканий вместо классов для определения тестов. Такой подход делает код компактнее и проще для восприятия. Например, тест, проверяющий истинность условия, в Pest выглядит как одна строка, а не как целый класс, что ускоряет разработку и облегчает чтение кода.
Важной частью успеха Pest стала его привлекательная консоль, которая предоставляет четкий и понятный вывод тестов. Pest также поддерживает большинство возможностей PHPUnit, включая провайдеры данных, хуки (аналог
🔧 Тестирование архитектуры. Позволяет задавать архитектурные правила для кода, например, обязательное использование строгого режима.
📸 Снапшоты. Удобны для проверки неизменности данных.
🚀 Стресс-тестирование. Полезно для проверки производительности приложений.
🛠️ Плагины. Pest активно поддерживает расширяемость, что позволяет добавлять новые функции через сторонние модули.
Эволюция Pest связана с его глубокой интеграцией в Laravel-сообщество. Многие популярные проекты, такие как Spatie, Livewire и Filament, перешли на Pest, что сделало его стандартом де-факто в экосистеме Laravel. Благодаря обратной совместимости с PHPUnit, переход на Pest не требует кардинального изменения существующих тестов, что облегчает его внедрение.
Таким образом, Pest стал не просто альтернативой PHPUnit, а его современной интерпретацией с улучшенным синтаксисом и расширенными возможностями. Если вы разрабатываете на PHP и еще не пробовали Pest, его простота и мощь делают его достойным внимания инструментом.
Pest — это современный инструмент для тестирования в PHP, созданный в 2021 году Нуну Мадуро, инженером Laravel. Pest быстро стал популярным благодаря своей интеграции с экосистемой Laravel и упрощению процесса тестирования. Основанный на PHPUnit, Pest сохраняет его мощь, но добавляет более удобный и лаконичный синтаксис.
Основное отличие Pest — это использование замыканий вместо классов для определения тестов. Такой подход делает код компактнее и проще для восприятия. Например, тест, проверяющий истинность условия, в Pest выглядит как одна строка, а не как целый класс, что ускоряет разработку и облегчает чтение кода.
Важной частью успеха Pest стала его привлекательная консоль, которая предоставляет четкий и понятный вывод тестов. Pest также поддерживает большинство возможностей PHPUnit, включая провайдеры данных, хуки (аналог
setUp
и tearDown
), фильтрацию и группировку тестов. Однако Pest пошел дальше, предложив функции, которые делают его уникальным:🔧 Тестирование архитектуры. Позволяет задавать архитектурные правила для кода, например, обязательное использование строгого режима.
📸 Снапшоты. Удобны для проверки неизменности данных.
🚀 Стресс-тестирование. Полезно для проверки производительности приложений.
🛠️ Плагины. Pest активно поддерживает расширяемость, что позволяет добавлять новые функции через сторонние модули.
Эволюция Pest связана с его глубокой интеграцией в Laravel-сообщество. Многие популярные проекты, такие как Spatie, Livewire и Filament, перешли на Pest, что сделало его стандартом де-факто в экосистеме Laravel. Благодаря обратной совместимости с PHPUnit, переход на Pest не требует кардинального изменения существующих тестов, что облегчает его внедрение.
Таким образом, Pest стал не просто альтернативой PHPUnit, а его современной интерпретацией с улучшенным синтаксисом и расширенными возможностями. Если вы разрабатываете на PHP и еще не пробовали Pest, его простота и мощь делают его достойным внимания инструментом.
👍15😁7❤5🌚1
Ваш возраст
Anonymous Poll
1%
Менее 18 лет
12%
18-24 года
42%
25-34 года
35%
35-44 года
6%
45-54 года
1%
55-64 года
3%
65 лет и старше
🌚1
В какой стране вы живете последние 3 месяца?
Anonymous Poll
59%
Россия
10%
Украина
6%
Беларусь
4%
Казахстан
1%
Польша
1%
Кыргызстан
5%
Узбекистан
1%
США
1%
Грузия
11%
Другое (✏️ напишу в комментариях)
🔥1🌚1👾1
В каком городе вы живёте последние 3 месяца?
Anonymous Poll
15%
Москва
7%
Санкт-Петербург
3%
Екатеринбург
4%
Краснодар
2%
Нижний Новгород
5%
Минск
5%
Киев
1%
Львов
2%
Алматы
57%
Другое (✏️ напишу в комментариях)
🌚3👍1
Какой у вас коммерческий опыт работы в IT?
Anonymous Poll
7%
Нет опыта
6%
До 1 года
15%
1-3 года включительно
27%
3-6 лет включительно
44%
Более 6 лет
🌚1
😁2🌚2
Ваш доход в месяц после вычета налогов
Anonymous Poll
10%
До 500$
8%
От 501$ до 800$
12%
От 801$ до 1100$
23%
От 1101$ до 2000$
19%
От 2001$ до 3000$
12%
От 3001$ до 4000$
6%
От 4001$ до 5000$
3%
От 5001$ до 6000$
7%
От 6001$
🌚1
В какой компании вы работаете?
Anonymous Poll
9%
Стартап
54%
Средний бизнес
26%
Крупная корпорация
10%
Фриланс
🌚2
Какая у вас специализация в IT?
Anonymous Poll
66%
Backend
1%
Frontend
27%
Fullstack
0%
Mobile
0%
Desktop
0%
QA
1%
DevOps/Sysadmin
0%
Data Science
1%
Кибербезопасность
3%
Другое (✏️ напишу в комментариях)
🌚1
Какой грейд у вас на работе?
Anonymous Poll
3%
Стажёр
13%
Джуниор
36%
Миддл
25%
Сеньор
11%
Тимлид
2%
Архитектор
4%
СТО
6%
Я не айтишник
🌚2
Какой контент вас больше привлекает в ТГ-каналах?
Anonymous Poll
39%
Полезные советы и лайфхаки
46%
Обучающие материалы
5%
Развлекательный контент
9%
Новости и аналитика
2%
Истории компаний
🌚3👍1🔥1
Opis Closure 4.0.0
Этот мажорный релиз представляет собой полную переработку библиотеки и обеспечивает поддержку функций PHP 8.x, таких как атрибуты, перечисления, свойства read-only, именованные параметры и т.д.
#новость
Этот мажорный релиз представляет собой полную переработку библиотеки и обеспечивает поддержку функций PHP 8.x, таких как атрибуты, перечисления, свойства read-only, именованные параметры и т.д.
#новость
GitHub
GitHub - opis/closure: Serialize closures, anonymous classes, and arbitrary data
Serialize closures, anonymous classes, and arbitrary data - opis/closure
👍3