Центральный процессор в многоядерных процессорах извлекает и выполняет инструкции из памяти, и операционная система управляет этим процессом. Контекстное переключение необходимо для многозадачности, но может замедлять систему, если переключений слишком много.
Здесь обсуждается необходимость добавления большего количества ядер ЦП и памяти для улучшения производительности в системах с большим количеством работающих программ. Вводится концепция многопоточности, которая позволяет нескольким потокам использовать одно и то же пространство памяти и уменьшать количество контекстных переключений.
В контексте PHP в статье утверждается, что PHP не поддерживает многопоточность, и PHP-FPM запускает несколько процессов для обработки входящих запросов. Это изоляция пространства памяти упрощает разработку, но может потребовать больше ядер ЦП и памяти для приложений с высокой нагрузкой.
В статье проводится сравнение PHP с Go, выделяя встроенную поддержку конкурентности, горутины и общую память в Go. Объясняется, какая модель выполнения использует Go по сравнению с PHP, и как горутины снижают накладные расходы контекстного переключения.
Автор предлагает полиглотную архитектуру, объединяющую PHP для быстрого развития и Go для эффективного использования ресурсов, чтобы решить проблемы с затратами на инфраструктуру. Описывается архитектура, использующая балансировку нагрузки между бэкендами PHP и Go для оптимизации использования ресурсов.
Здесь обсуждается необходимость добавления большего количества ядер ЦП и памяти для улучшения производительности в системах с большим количеством работающих программ. Вводится концепция многопоточности, которая позволяет нескольким потокам использовать одно и то же пространство памяти и уменьшать количество контекстных переключений.
В контексте PHP в статье утверждается, что PHP не поддерживает многопоточность, и PHP-FPM запускает несколько процессов для обработки входящих запросов. Это изоляция пространства памяти упрощает разработку, но может потребовать больше ядер ЦП и памяти для приложений с высокой нагрузкой.
В статье проводится сравнение PHP с Go, выделяя встроенную поддержку конкурентности, горутины и общую память в Go. Объясняется, какая модель выполнения использует Go по сравнению с PHP, и как горутины снижают накладные расходы контекстного переключения.
Автор предлагает полиглотную архитектуру, объединяющую PHP для быстрого развития и Go для эффективного использования ресурсов, чтобы решить проблемы с затратами на инфраструктуру. Описывается архитектура, использующая балансировку нагрузки между бэкендами PHP и Go для оптимизации использования ресурсов.
Themsaid
The Polyglot Stack — PHP & GoLang
👍10❤2
Уменьшаем количество багов в коде расширяя возможности статического PHP анализатора Psalm
В этой статье автор рассказывает о том, как он расширил функциональность статического анализатора Psalm для PHP под свои нужды. Его основной проблемой было то, что анализаторы не могли правильно определить классы, описанные в типах, что приводило к потенциальным ошибкам при рефакторинге.
В этой статье автор рассказывает о том, как он расширил функциональность статического анализатора Psalm для PHP под свои нужды. Его основной проблемой было то, что анализаторы не могли правильно определить классы, описанные в типах, что приводило к потенциальным ошибкам при рефакторинге.
Хабр
Уменьшаем количество багов в коде расширяя возможности статического PHP анализатора Psalm
Не буду вам рассказывать о всех прелестях использования статических анализаторов, на мой взгляд это очевидно. Об их разновидностях для PHP интересно рассказано, например здесь . А я расскажу о том как...
❤5
Почему префикс обратной косой черты улучшает производительность вызова функций PHP
Разработчики PHP часто используют обратную косую черту (\) перед вызовами функций, и здесь объясняется, почему это может быть полезно для производительности приложения.
В PHP, пространства имен (namespaces) используются для организации элементов, таких как классы и функции, внутри приложения. Для доступа к элементам в определенном пространстве имен, начинают с корневого пространства имен и добавляют все родительские пространства имен, разделяя их. Например, \App\Model\User().
Добавление обратной косой черты перед вызовом функции указывает интерпретатору искать функцию в корневом пространстве имен, что может ускорить поиск, так как большинство встроенных функций находятся там.
Разработчики PHP часто используют обратную косую черту (\) перед вызовами функций, и здесь объясняется, почему это может быть полезно для производительности приложения.
В PHP, пространства имен (namespaces) используются для организации элементов, таких как классы и функции, внутри приложения. Для доступа к элементам в определенном пространстве имен, начинают с корневого пространства имен и добавляют все родительские пространства имен, разделяя их. Например, \App\Model\User().
Добавление обратной косой черты перед вызовом функции указывает интерпретатору искать функцию в корневом пространстве имен, что может ускорить поиск, так как большинство встроенных функций находятся там.
www.deviaene.eu
Why does a backslash prefix improve PHP function call performance
Many developers prefix function calls with a backslash, but why? And what is the impact of this?
👍13❤2😁2
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для Москвы 👨🏻🏫
PHP-разработчик в KUBER
Москва. Сервис по автоматизации доставки контейнеров на авто.
Подробнее
PHP-разработчик в R-брокер
Москва. Контекстная реклама.
Подробнее
PHP (Laravel) разработчик в Kvando
Москва. Разработка, тестирование и поддержка ИТ-продуктов.
Подробнее
PHP-программист в Рубль.ру
Москва. Технологическая компания.
Подробнее
Web-разработчик в Ed.Partners
Москва. Диджитал-студия.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
Вакансии недели для Москвы 👨🏻🏫
PHP-разработчик в KUBER
Москва. Сервис по автоматизации доставки контейнеров на авто.
Подробнее
PHP-разработчик в R-брокер
Москва. Контекстная реклама.
Подробнее
PHP (Laravel) разработчик в Kvando
Москва. Разработка, тестирование и поддержка ИТ-продуктов.
Подробнее
PHP-программист в Рубль.ру
Москва. Технологическая компания.
Подробнее
Web-разработчик в Ed.Partners
Москва. Диджитал-студия.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
hh.ru
Вакансия PHP-разработчик в Москве, работа в компании KUBER (вакансия в архиве c 19 сентября 2023)
Зарплата: от 140000 до 160000 ₽ за месяц. Москва. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 16.09.2023.
🥱13👍6❤1
Какой был учебный проект, который вы показывали на первом собеседовании?⬇️⬇️⬇️
👍1
Аутентификация любого провайдера OAuth с помощью Laravel Socialite
Эта статья объясняет, как создать универсальный контроллер с использованием Socialite в Laravel для упрощения процесса входа через различные социальные сети, такие как Google или GitHub.
Эта статья объясняет, как создать универсальный контроллер с использованием Socialite в Laravel для упрощения процесса входа через различные социальные сети, такие как Google или GitHub.
DEV Community
Authenticate With Any OAuth Provider With Laravel Socialite
Ever tried to create an account on a website and find out there's no option to "login with Google"?...
👍6
Перечислите известные вам типы данных.
Хотя PHP это динамический язык, все же все данные в нем имеют четкие типы.
Скалярные типы:
✔️ bool
✔️ int
✔️ float (иногда встречается название double, что для php не имеет разницы)
✔️ string
Смешанные типы:
✔️ array
✔️ object
✔️ callable
✔️ iterable
Специальные типы:
✔️ resource
✔️ null
Подробнее о типах и псевдо-типах в документации.
#вопросы_с_собеседований
Хотя PHP это динамический язык, все же все данные в нем имеют четкие типы.
Скалярные типы:
✔️ bool
✔️ int
✔️ float (иногда встречается название double, что для php не имеет разницы)
✔️ string
Смешанные типы:
✔️ array
✔️ object
✔️ callable
✔️ iterable
Специальные типы:
✔️ resource
✔️ null
Подробнее о типах и псевдо-типах в документации.
#вопросы_с_собеседований
🥱10👍8❤1
Технология передачи данных в секретный контур
Статья описывает работу секретного контура, который представляет собой компьютер, отделенный от сети через однонаправленное устройство передачи данных (диод). Этот компьютер используется для передачи секретных данных, обеспечивая высокий уровень безопасности и контроля над данными. Секретный контур предоставляет механизм для передачи данных с одной стороны на другую, при этом строго контролируется доступ к данным и обеспечивается их целостность.
Статья описывает работу секретного контура, который представляет собой компьютер, отделенный от сети через однонаправленное устройство передачи данных (диод). Этот компьютер используется для передачи секретных данных, обеспечивая высокий уровень безопасности и контроля над данными. Секретный контур предоставляет механизм для передачи данных с одной стороны на другую, при этом строго контролируется доступ к данным и обеспечивается их целостность.
Хабр
Технология передачи данных в секретный контур
Что такое секретный контур? Это компьютер, который отделён от сети через «диод» (устройство однонаправленной передачи данных). Из него ничего не может выходить, а входить может...
👍3😁2🤔2
TokensValidation: безопасная аутентификация и авторизация для веб-приложений
Здесь представлена библиотека под названием TokensValidation, которая разработана для улучшения безопасности процессов аутентификации и авторизации в веб-приложениях. Библиотека предоставляет гибкие функции для создания и проверки токенов аутентификации и подтверждения, а также обладает следующими ключевыми особенностями.
Здесь представлена библиотека под названием TokensValidation, которая разработана для улучшения безопасности процессов аутентификации и авторизации в веб-приложениях. Библиотека предоставляет гибкие функции для создания и проверки токенов аутентификации и подтверждения, а также обладает следующими ключевыми особенностями.
DEV Community
Introducing TokensValidation: Secure Authentication & Authorization for Web Apps
Are you looking to enhance the security of your web applications' authentication and authorization...
❤1👍1
Видео: Принципы SOLID в Laravel и PHP: Практическое руководство
Если вам нужна ясность в том, как сделать ваши PHP-приложения более удобными в обслуживании, масштабируемыми и надежными, то это руководство для вас.
Это видео охватывает:
- Принцип единой ответственности (SRP): Сосредоточенность на ваших контроллерах и моделях Laravel.
- Принцип "Открыто/закрыто" (OCP): Расширение возможностей, не затрагивая старый код.
- Принцип подстановки Лисковой (LSP): Обеспечение взаимозаменяемости объектов в PHP для менее уязвимого кода
- Принцип разделения интерфейсов (ISP): Разработка экономичных, целенаправленных интерфейсов для ваших приложений Laravel.
Если вам нужна ясность в том, как сделать ваши PHP-приложения более удобными в обслуживании, масштабируемыми и надежными, то это руководство для вас.
Это видео охватывает:
- Принцип единой ответственности (SRP): Сосредоточенность на ваших контроллерах и моделях Laravel.
- Принцип "Открыто/закрыто" (OCP): Расширение возможностей, не затрагивая старый код.
- Принцип подстановки Лисковой (LSP): Обеспечение взаимозаменяемости объектов в PHP для менее уязвимого кода
- Принцип разделения интерфейсов (ISP): Разработка экономичных, целенаправленных интерфейсов для ваших приложений Laravel.
YouTube
SOLID Principles in Laravel & PHP: A Practical Guide
If you've been seeking clarity on making your PHP applications more maintainable, scalable, and robust, then this guide is for you.
This video covers:
- **Single Responsibility Principle (SRP)**: Keeping your Laravel controllers and models focused.
- **Open/Closed…
This video covers:
- **Single Responsibility Principle (SRP)**: Keeping your Laravel controllers and models focused.
- **Open/Closed…
🥱9❤2
Туториал по NativePHP: Создание приложения MenuBar для Mac
Статья начинается с инструкции по установке NativePHP в новом приложении Laravel. Затем описывается создание простого приложения Mac MenuBar, которое показывает местное время каждого члена команды. Процесс установки и запуска NativePHP подробно расписан.
Далее предоставляет код и инструкции по созданию приложения, включая установку необходимых пакетов, создание модели и представлений, настройку маршрутов и обработку операций Create и Update.
Статья начинается с инструкции по установке NativePHP в новом приложении Laravel. Затем описывается создание простого приложения Mac MenuBar, которое показывает местное время каждого члена команды. Процесс установки и запуска NativePHP подробно расписан.
Далее предоставляет код и инструкции по созданию приложения, включая установку необходимых пакетов, создание модели и представлений, настройку маршрутов и обработку операций Create и Update.
Laravel News
NativePHP Tutorial: Building a Mac MenuBar application - Laravel News
Follow along with this NativePHP tutorial as we put together a Mac MenuBar application to know the local time of each member of your team.
🥱6👍5❤2
Еще один #дайджест новостей по PHP за неделю:
🔎PHP 8.1.23 выпущен — Команда разработчиков PHP объявляет о немедленной доступности PHP 8.1.23. Это дебаг-релиз. Всем пользователям PHP 8.1 рекомендуется выполнить обновление до этой версии.
🔎Выпущена версия Laravel 10.21 — На этой неделе команда Laravel выпустила версию 10.21 с новыми вспомогательными методами строк, подсчетом поставщиков неудачных заданий, улучшенным типом возврата HTTP-пула и многим другим.
🔎Неделя Symfony #870 (28 августа — 3 сентября 2023 г.)
🔎PHP 8.1.23 выпущен — Команда разработчиков PHP объявляет о немедленной доступности PHP 8.1.23. Это дебаг-релиз. Всем пользователям PHP 8.1 рекомендуется выполнить обновление до этой версии.
🔎Выпущена версия Laravel 10.21 — На этой неделе команда Laravel выпустила версию 10.21 с новыми вспомогательными методами строк, подсчетом поставщиков неудачных заданий, улучшенным типом возврата HTTP-пула и многим другим.
🔎Неделя Symfony #870 (28 августа — 3 сентября 2023 г.)
👍2❤1
Использование AWS S3 для хранилища Laravel
Статья рассматривает использование Amazon Web Services (AWS) S3 для хранения данных в приложениях, разработанных на фреймворке Laravel.
Статья рассматривает использование Amazon Web Services (AWS) S3 для хранения данных в приложениях, разработанных на фреймворке Laravel.
Laravel News
Using AWS S3 for Laravel Storage - Laravel News
Learn how to set up AWS S3 and create buckets for your Laravel app
👍5❤3
Автоматическая регистрация пользовательских типов Doctrine в Symfony
Здесь раскрываются следующие темы:
✅Зачем нужны объекты-значения: Объясняется, что объекты-значения используются для инкапсуляции типов в предметной области приложения и как они могут помочь более точно моделировать домен.
✅Проблема с Doctrine: Обсуждается проблема, связанная с тем, что Doctrine, используемая для управления уровнем персистентности, не знает, как обрабатывать пользовательские типы объектов-значений.
✅Создание пользовательских типов Doctrine: Показано, как создавать собственные типы Doctrine, которые позволяют преобразовывать объекты-значения в формат базы данных и наоборот.
Здесь раскрываются следующие темы:
✅Зачем нужны объекты-значения: Объясняется, что объекты-значения используются для инкапсуляции типов в предметной области приложения и как они могут помочь более точно моделировать домен.
✅Проблема с Doctrine: Обсуждается проблема, связанная с тем, что Doctrine, используемая для управления уровнем персистентности, не знает, как обрабатывать пользовательские типы объектов-значений.
✅Создание пользовательских типов Doctrine: Показано, как создавать собственные типы Doctrine, которые позволяют преобразовывать объекты-значения в формат базы данных и наоборот.
DEV Community
Auto-registering custom Doctrine types in Symfony
Introduction As we saw in object calisthenics and generally, it is a good practice to use...
❤5👍4👾2
Быстрые запросы к базе данных не всегда лучше
Автор задает вопрос: действительно ли медленные запросы к базе данных плохи? Он признает, что "плохо" может быть не самым подходящим словом и предлагает использовать термин "не идеально". Затем он размышляет о том, как определить, что является "медленным" запросом.
Автор предлагает два способа: сравнивать запросы по времени выполнения и явно устанавливать порог медленных запросов с помощью журнала медленных запросов базы данных. Он предлагает установить порог в 1 секунду и записывать запросы, которые превышают этот порог, в журнал медленных запросов.
Затем автор переходит к обсуждению быстрых запросов. Он задает вопросы: почему быстрые запросы считаются хорошими, и в каком контексте это важно? Автор утверждает, что быстрые запросы важны, потому что они свидетельствуют о быстрой работе приложения, но он также подчеркивает, что он не рассматривает запросы изолированно, а в контексте их взаимодействия внутри веб-приложений.
Он объясняет, что для измерения производительности необходимо учитывать совокупное время выполнения запроса, а не только отдельных запросов. Он предоставляет пример, в котором множество быстрых запросов в сумме замедляют HTTP-запрос, и подчеркивает, что для оптимизации приложения важно смотреть на совокупное время запроса.
Затем автор представляет новый метод в Laravel, который позволяет измерять совокупное время выполнения запросов в рамках одного HTTP-запроса, в отличие от предыдущего метода, который рассматривал запросы изолированно. Для этого автор предлагает зарегистрировать два обработчика событий в приложении, оба с порогом в 1 секунду.
Он демонстрирует, что при выполнении HTTP-запроса, который содержит быстрые запросы, выполняющиеся в цикле, оба обработчика реагируют по-разному. Первый, ориентированный на изолированные запросы, не регистрирует медленные запросы, но второй, ориентированный на совокупное время, регистрирует, что совокупное время выполнения запросов превышает 1 секунду.
Этот новый метод позволяет обнаруживать случаи, когда множество быстрых запросов в сумме замедляют выполнение HTTP-запросов. Автор подчеркивает, что это не заменяет журнал медленных запросов к базе данных, но представляет дополнительный инструмент для изучения и оптимизации производительности приложений.
Автор задает вопрос: действительно ли медленные запросы к базе данных плохи? Он признает, что "плохо" может быть не самым подходящим словом и предлагает использовать термин "не идеально". Затем он размышляет о том, как определить, что является "медленным" запросом.
Автор предлагает два способа: сравнивать запросы по времени выполнения и явно устанавливать порог медленных запросов с помощью журнала медленных запросов базы данных. Он предлагает установить порог в 1 секунду и записывать запросы, которые превышают этот порог, в журнал медленных запросов.
Затем автор переходит к обсуждению быстрых запросов. Он задает вопросы: почему быстрые запросы считаются хорошими, и в каком контексте это важно? Автор утверждает, что быстрые запросы важны, потому что они свидетельствуют о быстрой работе приложения, но он также подчеркивает, что он не рассматривает запросы изолированно, а в контексте их взаимодействия внутри веб-приложений.
Он объясняет, что для измерения производительности необходимо учитывать совокупное время выполнения запроса, а не только отдельных запросов. Он предоставляет пример, в котором множество быстрых запросов в сумме замедляют HTTP-запрос, и подчеркивает, что для оптимизации приложения важно смотреть на совокупное время запроса.
Затем автор представляет новый метод в Laravel, который позволяет измерять совокупное время выполнения запросов в рамках одного HTTP-запроса, в отличие от предыдущего метода, который рассматривал запросы изолированно. Для этого автор предлагает зарегистрировать два обработчика событий в приложении, оба с порогом в 1 секунду.
Он демонстрирует, что при выполнении HTTP-запроса, который содержит быстрые запросы, выполняющиеся в цикле, оба обработчика реагируют по-разному. Первый, ориентированный на изолированные запросы, не регистрирует медленные запросы, но второй, ориентированный на совокупное время, регистрирует, что совокупное время выполнения запросов превышает 1 секунду.
Этот новый метод позволяет обнаруживать случаи, когда множество быстрых запросов в сумме замедляют выполнение HTTP-запросов. Автор подчеркивает, что это не заменяет журнал медленных запросов к базе данных, но представляет дополнительный инструмент для изучения и оптимизации производительности приложений.
Tim MacDonald
Fast database queries are not always better
You probably think fast database queries are good. You also probably think slow database queries are bad. On top of all of these "thinks" you have about database queries - there is a certain Laravel method that, if you’ve seen it, you probably think you understand…but…
❤7👍6
Что такое Dry?
Принцип DRY (Don't Repeat Yourself) - это принцип проектирования программного кода, который подразумевает избегание дублирования кода. Суть этого принципа заключается в том, что каждая часть информации или логики должна существовать в системе только в одном месте. Если вы обнаружите повторяющийся код или информацию, это может указывать на нарушение принципа DRY.
Преимущества соблюдения принципа DRY включают в себя:
✔️Уменьшение дублирования кода: Избегание повторений упрощает поддержку и обновление кода, поскольку вам нужно будет внести изменения только в одном месте.
✔️Улучшение читаемости кода: Когда информация находится в единственном месте, код становится более понятным и легче для понимания другими разработчиками.
✔️Уменьшение вероятности ошибок: Повторяющийся код может привести к ошибкам при изменении одной из копий. Избегая дублирования, вы уменьшаете риск возникновения таких ошибок.
✔️Увеличение производительности разработки: Поскольку изменения могут быть внесены в одном месте, разработка становится более эффективной и быстрой.
#вопросы_с_собеседований
Принцип DRY (Don't Repeat Yourself) - это принцип проектирования программного кода, который подразумевает избегание дублирования кода. Суть этого принципа заключается в том, что каждая часть информации или логики должна существовать в системе только в одном месте. Если вы обнаружите повторяющийся код или информацию, это может указывать на нарушение принципа DRY.
Преимущества соблюдения принципа DRY включают в себя:
✔️Уменьшение дублирования кода: Избегание повторений упрощает поддержку и обновление кода, поскольку вам нужно будет внести изменения только в одном месте.
✔️Улучшение читаемости кода: Когда информация находится в единственном месте, код становится более понятным и легче для понимания другими разработчиками.
✔️Уменьшение вероятности ошибок: Повторяющийся код может привести к ошибкам при изменении одной из копий. Избегая дублирования, вы уменьшаете риск возникновения таких ошибок.
✔️Увеличение производительности разработки: Поскольку изменения могут быть внесены в одном месте, разработка становится более эффективной и быстрой.
#вопросы_с_собеседований
👍9🥱5
Улучшите свою навыки отладки с помощью Blackfire для устранения ошибок Segfault
Данная статья описывает новую опцию отладки, предоставляемую Blackfire, инструментом для профилирования и оптимизации PHP-приложений. Эта опция относится к обработке фатальных ошибок, таких как ошибка сегментации (segfault), которые могут возникать в PHP-приложениях и быть сложными для диагностики и устранения.
Основные моменты, рассматриваемые в статье, включают:
☑️Проблемы с ошибками сегментации: Ошибка сегментации является фатальной ошибкой в PHP и может быть сложной для выявления и устранения. Она может возникать спорадически и не всегда воспроизводиться.
☑️Необходимость измерения и понимания: Статья подчеркивает важность измерения и понимания проблемы перед её решением. Blackfire предоставляет инструмент для сбора журналов ошибок сегментации, чтобы обеспечить точные данные для анализа.
☑️Опция отладки: Blackfire предоставляет опцию отладки, которая записывает журналы при возникновении ошибки сегментации, что помогает разработчикам быстрее выявить и устранить проблемы.
☑️Как использовать опцию: Статья описывает, как можно включить эту опцию для конкретной конфигурации зонда Blackfire через переменные среды или файл php.ini.
Данная статья описывает новую опцию отладки, предоставляемую Blackfire, инструментом для профилирования и оптимизации PHP-приложений. Эта опция относится к обработке фатальных ошибок, таких как ошибка сегментации (segfault), которые могут возникать в PHP-приложениях и быть сложными для диагностики и устранения.
Основные моменты, рассматриваемые в статье, включают:
☑️Проблемы с ошибками сегментации: Ошибка сегментации является фатальной ошибкой в PHP и может быть сложной для выявления и устранения. Она может возникать спорадически и не всегда воспроизводиться.
☑️Необходимость измерения и понимания: Статья подчеркивает важность измерения и понимания проблемы перед её решением. Blackfire предоставляет инструмент для сбора журналов ошибок сегментации, чтобы обеспечить точные данные для анализа.
☑️Опция отладки: Blackfire предоставляет опцию отладки, которая записывает журналы при возникновении ошибки сегментации, что помогает разработчикам быстрее выявить и устранить проблемы.
☑️Как использовать опцию: Статья описывает, как можно включить эту опцию для конкретной конфигурации зонда Blackfire через переменные среды или файл php.ini.
Blackfire.io Le Blog
Stepping up your debugging game: unveiling Blackfire’s new debug option to troubleshoot Segfaults
Say goodbye to Segfault mysteries! Blackfire’s new debug option captures critical logs before a crash and makes troubleshooting easier.
👍2❤1🌚1