Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.36K photos
20 videos
26 files
4.05K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Центральный процессор в многоядерных процессорах извлекает и выполняет инструкции из памяти, и операционная система управляет этим процессом. Контекстное переключение необходимо для многозадачности, но может замедлять систему, если переключений слишком много.

Здесь обсуждается необходимость добавления большего количества ядер ЦП и памяти для улучшения производительности в системах с большим количеством работающих программ. Вводится концепция многопоточности, которая позволяет нескольким потокам использовать одно и то же пространство памяти и уменьшать количество контекстных переключений.

В контексте PHP в статье утверждается, что PHP не поддерживает многопоточность, и PHP-FPM запускает несколько процессов для обработки входящих запросов. Это изоляция пространства памяти упрощает разработку, но может потребовать больше ядер ЦП и памяти для приложений с высокой нагрузкой.

В статье проводится сравнение PHP с Go, выделяя встроенную поддержку конкурентности, горутины и общую память в Go. Объясняется, какая модель выполнения использует Go по сравнению с PHP, и как горутины снижают накладные расходы контекстного переключения.

Автор предлагает полиглотную архитектуру, объединяющую PHP для быстрого развития и Go для эффективного использования ресурсов, чтобы решить проблемы с затратами на инфраструктуру. Описывается архитектура, использующая балансировку нагрузки между бэкендами PHP и Go для оптимизации использования ресурсов.
👍102
Уменьшаем количество багов в коде расширяя возможности статического PHP анализатора Psalm

В этой статье автор рассказывает о том, как он расширил функциональность статического анализатора Psalm для PHP под свои нужды. Его основной проблемой было то, что анализаторы не могли правильно определить классы, описанные в типах, что приводило к потенциальным ошибкам при рефакторинге.
5
Почему префикс обратной косой черты улучшает производительность вызова функций PHP

Разработчики PHP часто используют обратную косую черту (\) перед вызовами функций, и здесь объясняется, почему это может быть полезно для производительности приложения.

В PHP, пространства имен (namespaces) используются для организации элементов, таких как классы и функции, внутри приложения. Для доступа к элементам в определенном пространстве имен, начинают с корневого пространства имен и добавляют все родительские пространства имен, разделяя их. Например, \App\Model\User().

Добавление обратной косой черты перед вызовом функции указывает интерпретатору искать функцию в корневом пространстве имен, что может ускорить поиск, так как большинство встроенных функций находятся там.
👍132😁2
#дайджест #phpdevjob

Вакансии недели для Москвы 👨🏻‍🏫

PHP-разработчик в KUBER
Москва. Сервис по автоматизации доставки контейнеров на авто.
Подробнее

PHP-разработчик в R-брокер
Москва. Контекстная реклама.
Подробнее

PHP (Laravel) разработчик в Kvando
Москва. Разработка, тестирование и поддержка ИТ-продуктов.
Подробнее

PHP-программист в Рубль.ру
Москва. Технологическая компания.
Подробнее

Web-разработчик в Ed.Partners
Москва. Диджитал-студия.
Подробнее

Понравились вакансии?
👍 — да
👎 — нет
🥱13👍61
Какой был учебный проект, который вы показывали на первом собеседовании?⬇️⬇️⬇️
👍1
Аутентификация любого провайдера OAuth с помощью Laravel Socialite

Эта статья объясняет, как создать универсальный контроллер с использованием Socialite в Laravel для упрощения процесса входа через различные социальные сети, такие как Google или GitHub.
👍6
Перечислите известные вам типы данных.

Хотя PHP это динамический язык, все же все данные в нем имеют четкие типы.
Скалярные типы:
✔️ bool
✔️ int
✔️ float (иногда встречается название double, что для php не имеет разницы)
✔️ string
Смешанные типы:
✔️ array
✔️ object
✔️ callable
✔️ iterable
Специальные типы:
✔️ resource
✔️ null

Подробнее о типах и псевдо-типах в документации.

#вопросы_с_собеседований
🥱10👍81
Технология передачи данных в секретный контур

Статья описывает работу секретного контура, который представляет собой компьютер, отделенный от сети через однонаправленное устройство передачи данных (диод). Этот компьютер используется для передачи секретных данных, обеспечивая высокий уровень безопасности и контроля над данными. Секретный контур предоставляет механизм для передачи данных с одной стороны на другую, при этом строго контролируется доступ к данным и обеспечивается их целостность.
👍3😁2🤔2
TokensValidation: безопасная аутентификация и авторизация для веб-приложений

Здесь представлена библиотека под названием TokensValidation, которая разработана для улучшения безопасности процессов аутентификации и авторизации в веб-приложениях. Библиотека предоставляет гибкие функции для создания и проверки токенов аутентификации и подтверждения, а также обладает следующими ключевыми особенностями.
1👍1
Видео: Принципы SOLID в Laravel и PHP: Практическое руководство

Если вам нужна ясность в том, как сделать ваши PHP-приложения более удобными в обслуживании, масштабируемыми и надежными, то это руководство для вас.

Это видео охватывает:

- Принцип единой ответственности (SRP): Сосредоточенность на ваших контроллерах и моделях Laravel.
- Принцип "Открыто/закрыто" (OCP): Расширение возможностей, не затрагивая старый код.
- Принцип подстановки Лисковой (LSP): Обеспечение взаимозаменяемости объектов в PHP для менее уязвимого кода
- Принцип разделения интерфейсов (ISP): Разработка экономичных, целенаправленных интерфейсов для ваших приложений Laravel.
🥱92
Туториал по NativePHP: Создание приложения MenuBar для Mac

Статья начинается с инструкции по установке NativePHP в новом приложении Laravel. Затем описывается создание простого приложения Mac MenuBar, которое показывает местное время каждого члена команды. Процесс установки и запуска NativePHP подробно расписан.

Далее предоставляет код и инструкции по созданию приложения, включая установку необходимых пакетов, создание модели и представлений, настройку маршрутов и обработку операций Create и Update.
🥱6👍52
Еще один #дайджест новостей по 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 г.)
👍21
Использование AWS S3 для хранилища Laravel

Статья рассматривает использование Amazon Web Services (AWS) S3 для хранения данных в приложениях, разработанных на фреймворке Laravel.
👍53
Автоматическая регистрация пользовательских типов Doctrine в Symfony

Здесь раскрываются следующие темы:

Зачем нужны объекты-значения: Объясняется, что объекты-значения используются для инкапсуляции типов в предметной области приложения и как они могут помочь более точно моделировать домен.

Проблема с Doctrine: Обсуждается проблема, связанная с тем, что Doctrine, используемая для управления уровнем персистентности, не знает, как обрабатывать пользовательские типы объектов-значений.

Создание пользовательских типов Doctrine: Показано, как создавать собственные типы Doctrine, которые позволяют преобразовывать объекты-значения в формат базы данных и наоборот.
5👍4👾2
Быстрые запросы к базе данных не всегда лучше

Автор задает вопрос: действительно ли медленные запросы к базе данных плохи? Он признает, что "плохо" может быть не самым подходящим словом и предлагает использовать термин "не идеально". Затем он размышляет о том, как определить, что является "медленным" запросом.

Автор предлагает два способа: сравнивать запросы по времени выполнения и явно устанавливать порог медленных запросов с помощью журнала медленных запросов базы данных. Он предлагает установить порог в 1 секунду и записывать запросы, которые превышают этот порог, в журнал медленных запросов.

Затем автор переходит к обсуждению быстрых запросов. Он задает вопросы: почему быстрые запросы считаются хорошими, и в каком контексте это важно? Автор утверждает, что быстрые запросы важны, потому что они свидетельствуют о быстрой работе приложения, но он также подчеркивает, что он не рассматривает запросы изолированно, а в контексте их взаимодействия внутри веб-приложений.

Он объясняет, что для измерения производительности необходимо учитывать совокупное время выполнения запроса, а не только отдельных запросов. Он предоставляет пример, в котором множество быстрых запросов в сумме замедляют HTTP-запрос, и подчеркивает, что для оптимизации приложения важно смотреть на совокупное время запроса.

Затем автор представляет новый метод в Laravel, который позволяет измерять совокупное время выполнения запросов в рамках одного HTTP-запроса, в отличие от предыдущего метода, который рассматривал запросы изолированно. Для этого автор предлагает зарегистрировать два обработчика событий в приложении, оба с порогом в 1 секунду.

Он демонстрирует, что при выполнении HTTP-запроса, который содержит быстрые запросы, выполняющиеся в цикле, оба обработчика реагируют по-разному. Первый, ориентированный на изолированные запросы, не регистрирует медленные запросы, но второй, ориентированный на совокупное время, регистрирует, что совокупное время выполнения запросов превышает 1 секунду.

Этот новый метод позволяет обнаруживать случаи, когда множество быстрых запросов в сумме замедляют выполнение HTTP-запросов. Автор подчеркивает, что это не заменяет журнал медленных запросов к базе данных, но представляет дополнительный инструмент для изучения и оптимизации производительности приложений.
7👍6
Что такое Dry?

Принцип DRY (Don't Repeat Yourself) - это принцип проектирования программного кода, который подразумевает избегание дублирования кода. Суть этого принципа заключается в том, что каждая часть информации или логики должна существовать в системе только в одном месте. Если вы обнаружите повторяющийся код или информацию, это может указывать на нарушение принципа DRY.

Преимущества соблюдения принципа DRY включают в себя:

✔️Уменьшение дублирования кода: Избегание повторений упрощает поддержку и обновление кода, поскольку вам нужно будет внести изменения только в одном месте.

✔️Улучшение читаемости кода: Когда информация находится в единственном месте, код становится более понятным и легче для понимания другими разработчиками.

✔️Уменьшение вероятности ошибок: Повторяющийся код может привести к ошибкам при изменении одной из копий. Избегая дублирования, вы уменьшаете риск возникновения таких ошибок.

✔️Увеличение производительности разработки: Поскольку изменения могут быть внесены в одном месте, разработка становится более эффективной и быстрой.

#вопросы_с_собеседований
👍9🥱5
Улучшите свою навыки отладки с помощью Blackfire для устранения ошибок Segfault

Данная статья описывает новую опцию отладки, предоставляемую Blackfire, инструментом для профилирования и оптимизации PHP-приложений. Эта опция относится к обработке фатальных ошибок, таких как ошибка сегментации (segfault), которые могут возникать в PHP-приложениях и быть сложными для диагностики и устранения.

Основные моменты, рассматриваемые в статье, включают:

☑️Проблемы с ошибками сегментации: Ошибка сегментации является фатальной ошибкой в PHP и может быть сложной для выявления и устранения. Она может возникать спорадически и не всегда воспроизводиться.

☑️Необходимость измерения и понимания: Статья подчеркивает важность измерения и понимания проблемы перед её решением. Blackfire предоставляет инструмент для сбора журналов ошибок сегментации, чтобы обеспечить точные данные для анализа.

☑️Опция отладки: Blackfire предоставляет опцию отладки, которая записывает журналы при возникновении ошибки сегментации, что помогает разработчикам быстрее выявить и устранить проблемы.

☑️Как использовать опцию: Статья описывает, как можно включить эту опцию для конкретной конфигурации зонда Blackfire через переменные среды или файл php.ini.
👍21🌚1