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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Хватит спрашивать у синьоров джуниорские вопросы на собеседованиях

Это крик души разработчика с 11-летним опытом, который устал от формальных, оторванных от реальности собеседований. Он не жалуется — он говорит правду, которую многие думают, но не озвучивают: вместо оценки реального опыта, мышления и навыков — проверяют память и подготовку к викторине.

Он не против технологий, не против сложности. Он против абсурдных требований помнить то, что в работе не используется, и того, что настоящий профессионал «гуглит» не потому что некомпетентен, а потому что не тратит мозг на запоминание справочников.

🔗 Хабр
1👍168😁2
🧅 Onion: Механизм многоуровневой обработки для PHP-приложений

Onion — это легкий пакет, предназначенный для облегчения многоуровневой обработки данных в приложениях. Он обеспечивает чистый и эффективный способ укладки слоев функциональности, позволяя разработчикам создавать гибкие и многократно используемые компоненты, которые легко компоновать и управлять ими. Каждый слой может выполнять определенную операцию над передаваемыми данными, что упрощает построение сложных рабочих процессов, сохраняя при этом четкое разделение задач.

👉 Github

Библиотека пхпшника #инструменты
4
Правильный перезапуск Opcache после развертывания

Важно правильно перезагружать Opcache при деплое кода на сервер без использования контейнеров.

Opcache сохраняет старые версии файлов в кэше и не выбрасывает их автоматически. Поэтому, если новая версия кода деплоится в новую директорию, старые файлы остаются в кэше, занимая место и предотвращая сохранение новых файлов. Это приводит к необходимости постоянной перекомпиляции новых файлов, что снижает производительность.

Статья предлагает два решения проблемы:

1. Перезагрузка процесса «php-fpm» после деплоя новой версии кода. Однако, это решение приводит к прерыванию текущих запросов на короткое время.

2. Использование утилиты gordalina/cachetool или аналогичной, например, chop, для сброса кэша. Cachetool позволяет сбросить кэш без перезагрузки php-fpm, обнаруживая PHP-FPM через сокеты или IP-адрес и порт. Утилиту можно установить и использовать следующими командами:

Скачивание и установка:
curl -sLO https://github.com/gordalina/cachetool/releases/latest/download/cachetool.phar

chmod +x cachetool.phar

Сброс кэша:

php cachetool.phar opcache:reset

В случае использования других сокетов или IP-адресов и портов, команда выглядит так:
php cachetool.phar opcache:reset --fcgi=/var/run/php/php8.2-fpm-profiler.sock
👍5
Запуск PHP 1.0

Как выглядел код 30 лет назад?

💻 Смотреть видео

Библиотека пхпшника #буст
👍63🤔1
🚀 Главная ошибка новичка в ML — строить звездолёт вместо велосипеда

Многие сразу хотят свою Midjourney, но в итоге получают только выгорание.

Успех начинается с «велосипеда»: научитесь предсказывать цены или классифицировать отзывы. Освойте базу, а уже потом стройте «звездолёты».

Наш курс «ML для старта в Data Science» — это и есть тот самый правильный старт от простого к сложному.

👉 Начните правильно

Берёте курс «ML для старта» до конца недели — Python в подарок.

А 21 августа пройдет бесплатный вебинар с Марией Жаровой: узнаете, какие проекты качают скилл, а какие качают ваши нервы.

А какой самый сложный проект вы брались делать в самом начале? 🫢
👾1
This media is not supported in your browser
VIEW IN TELEGRAM
💃 Как взять задачи посерьёзнее

Почему одним достаются крутые фичи, а вы — снова на багфиксе. Именно с такой историей пришёл к нам подписчик:
Работаю в команде больше года. Почти все ключевые и интересные задачи уходят к сеньорам. Мне достаются мелкие доработки, баги и то, что «надо кому-то сделать». Сначала думал, что это временно. Что делать, чтобы перейти на более серьёзный уровень и не застрять в рутине?


Если вы молча делаете своё и не выходите за рамки текущих задач, команду устраивает, что вы «надёжный исполнитель».

Хотите большего — начните показывать больше: идеи, инициативу, участие в обсуждениях, собственные предложения.

Даже если вы в команде давно — это не аргумент для роста. Важнее — насколько вы выросли профессионально, какой вклад вы создаёте, и готовы ли к задачам более высокого уровня.

Если вы хотите получить серьёзную задачу — приходите подготовленным: изучите фичу, продумайте архитектуру, обозначьте риски. Это сигнал: вам можно доверять.

💬 Что вы делали для того, чтобы взять задачку покруче? Делитесь опытом в комментариях 👇

🐸Библиотека пхпшника #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🔄 Команда дня: Обновление всех зависимостей до последних стабильных версий

📌 Команда:

composer update --prefer-dist

Эта команда обновляет все зависимости проекта до последних стабильных версий, предпочитая скачивание архивов пакетов, что может быть быстрее и надёжнее.

🔍 Зачем это нужно?
Регулярное обновление зависимостей помогает поддерживать проект в актуальном состоянии, обеспечивая:
Исправление уязвимостей безопасности: Обновления часто включают исправления для известных уязвимостей.
Совместимость с новыми версиями PHP: Некоторые пакеты могут требовать обновлений для поддержки последних версий PHP.
Доступ к новым функциям и улучшениям производительности: Обновления могут включать новые возможности и оптимизации.

⚙️ Как это работает?
composer update: Обновляет все зависимости до последних версий, соответствующих ограничениям, указанным в composer.json.
--prefer-dist: Предпочитает скачивание архивов пакетов вместо клонирования репозиториев Git, что может быть быстрее и надёжнее.

📦 Дополнительные флаги:
--no-dev: Не обновляет зависимости, указанные в секции require-dev.
--dry-run: Показывает, какие изменения будут внесены, но не выполняет их.
--with-all-dependencies: Обновляет все зависимости, включая те, которые являются зависимостями других пакетов.

🧪 Пример использования:

composer update --prefer-dist --no-dev

Эта команда обновит все основные зависимости до последних стабильных версий, исключая зависимости для разработки.

⚠️ Важные замечания:
Проверка совместимости: Перед обновлением рекомендуется проверить, совместимы ли новые версии зависимостей с вашим проектом.
Резервное копирование: Перед выполнением обновлений сделайте резервную копию вашего проекта, чтобы в случае проблем можно было восстановить его состояние.
Тестирование: После обновления зависимостей обязательно выполните тесты, чтобы убедиться в корректной работе приложения.

Библиотека пхпшника #буст
🥱63👍1
🧠 Выбор первого ML-проекта: чеклист против выгорания

Классика плохих решений в ML — выбрать слишком сложный проект: неделя ковыряния в коде, десятки крашей и никакого результата. Хотите дойти до финиша — начните с простого проекта, который реально можно довести до конца.

Мини-чеклист первого проекта:

1. Понятные данные — без «я нашёл датасет в даркнете, но он на суахили».

2. Измеримая метрика — «точность 92%», а не «ну вроде работает».

3. Объяснимый результат — чтобы не-техлид понял, почему модель ругается на спам.

Наш курс «ML для старта в Data Science» — старт от простого к сложному: теория → практика → проверка → проект в портфолио.

👉 Начать свой путь в Data Science

Оплатите курс по ML до 17 августа — курс по Python в подарок.

📅 Бесплатный вебинар с Марией Жаровой — 21 августа: как выбирать проекты, которые доводят до оффера, а не до психотерапевта.

💾 Сохрани, чтобы не потерять, когда будешь готов(а) начать
🧠 Оптимизация через обратный слэш в PHP — миф или реальность?

Опкод — промежуточное представление кода, которое исполняется Zend VM. PHP, как и Java, сначала транслирует код в опкоды. Только если Java сохраняет байткод в .class, то PHP — нет. Для этого и существует OPcache.

⚠️ Проблема:
При вызове стандартных функций без обратного слэша (например, explode()), PHP сначала пытается найти функцию в текущем пространстве имён. Это резолвинг — лишнее действие, которого можно избежать.

💡 Решение:
Добавить \ перед вызовами глобальных функций (\explode(), \strlen() и т.д.), тем самым указывая интерпретатору сразу на нужное пространство.

🔬 Бенчмарки:
Проведено сравнение двух версий кода — с бэкслешами и без:

0.576μs → без бэкслешей
0.536μs → с бэкслешами

Разница — 7%, или 40 наносекунд. Мизер? Да. Но в случае 1000+ вызовов — уже ощутимо. В контексте фреймворков, обрабатывающих сотни запросов в секунду, это может суммарно повлиять.

🛠️ Что делать:
• Включить в проекте PHP-CS-Fixer с правилом native_function_invocation
• Или приучиться добавлять \ вручную
• Для любителей хардкора — реанимировать устаревший PHP_CodeSniffer с нестабильным плагином

📌 Вывод:
Это не про магию ускорения. Это микрооптимизация, и в большинстве случаев она не даст серьёзного прироста. Но она точно иллюстрирует, как работает PHP под капотом — и где теряется время.

🔗 Хабр

Библиотека пхпшника
👍51
⚙️ Холивар: MVC — архитектура века или рудимент?

Сколько лет этому паттерну? Наверное, все начинали с MVC, но пришли ли мы к его пределу?
Зачем продолжать использовать его, если появляются новые подходы? Давайте разбираться!

🏢 MVC — классика и фундамент
Model-View-Controller — это основа для большинства фреймворков. Он помогает организовать код и разделить логику, представление и управление.

Плюсы:
Чистая структура: Логика разделена, что делает код более понятным и поддерживаемым.
Масштабируемость: Удобно работать с большими проектами, ведь ты всегда можешь отредактировать контроллер, не затронув модель или представление.
Множество инструментов и фреймворков: Все популярные фреймворки (Laravel, Symfony, Yii) базируются на этом паттерне.

Минусы:
Сложности при масштабировании: Если проект становится слишком большим, MVC может оказаться слишком жестким и ограничивающим.
Часто получается «заводной механизм»: Слишком много кода для простых задач. Например, в некоторых приложениях приходится создавать контроллеры для самых элементарных операций.

🚀 Альтернативы MVC: нужно ли оно в 2025 году?
MVVM (Model-View-ViewModel), CQRS, Hexagonal Architecture и другие подходы набирают популярность, особенно в микросервисах и крупных распределенных системах.
Доменное управление и Event-Driven подходы предполагают меньшую зависимость от чёткой структуры и большее внимание на бизнес-логику и взаимодействие сервисов.

Плюсы альтернатив:
Гибкость: Лучшие решения для микросервисов и приложений с большим числом пользователей.
Менее громоздко: Например, в современных front-end-фреймворках (React, Vue) уже нет четкого разделения MVC, а есть более простые и адаптивные подходы.
Минусы альтернатив:
Кривая обучения: Новые подходы сложнее для новичков и требуют больше времени на освоение.
Потеря очевидности: Пока MVC остаётся самым понятным и привычным, альтернативы могут усложнить структуру кода.

🤔 Когда стоит использовать MVC?
Если проект малый или средний, где тебе не нужно усложнять архитектуру, MVC по-прежнему отличный выбор.
Для больших проектов, где тебе важно разделить задачи и гибко расширять систему, можно
обратить внимание на более современные подходы.

💬 А что думаете вы?
MVC — это всё ещё ваша основная архитектура, или вы уже используете новые подходы и микросервисы?

Библиотека пхпшника #междусобойчик
6
😎 Вы просили — мы сделали. Самый долгожданный анонс этого лета!

Мы открываем набор на второй поток курса «AI-агенты для DS-специалистов»!

На курсе мы учим главному навыку 2025 года: не просто «болтать» с LLM, а строить из них рабочие системы с помощью Ollama, RAG, LangChain и crew.ai.

📆 Старт потока — 15 сентября.

💸 Цена 49 000 ₽ действует только в эти выходные — до 17 августа. С понедельника будет дороже.

👉 Занять место
1🥱1
💻 Подборка новостей по PHP за неделю:​

🔹 Featurevisor PHP SDK — интеграция Featurevisor в PHP-бэкенды без привязки к конкретному фреймворку, включая Laravel, CakePHP, Symfony и др.

🔹 Filament v4 — стабильный релиз с улучшенной скоростью, UX и новыми возможностями; ключевую роль сыграло сообщество, активно тестировавшее бета-версии.

🔹 Laravel Boost — новый AI-стартер-кит для ускорения разработки, презентован Тейлором Отвеллом на Laracon US; возглавляет проект Эшли Хайндл.

🔹 Livewire 4 — Калеб Порцио представил полностью переработанную версию с упрощённым API и улучшенной производительностью.

🔹 Symfony 4–10 августа 2025 — миграция на PHPUnit 12 в ветке 7.4, отказ от аннотаций в пользу атрибутов, обновлён дамп контейнера без зависимости от PHP XML extension.

Библиотека пхпшника

#свежак
2
🫣 Хотите в Data Science, но боитесь высшей математики?

Хорошая новость: вам не нужно становиться математиком. Вам нужно освоить конкретные разделы, которые реально используются в работе и на собеседованиях.

Именно этому учат преподаватели ВМК МГУ на нашем курсе «Математика для Data Science».

Без лишней воды — только то, что нужно для:

успешного поступления в ШАД Яндекса;
прохождения собеседований уровня FAANG;
глубокого понимания ML-алгоритмов.

Это самый прямой путь к математическому фундаменту, на котором строится вся карьера в Data Science.

👉 Начните строить свою карьеру уже сегодня
🔥 Последняя неделя, чтобы забрать курс по AI-агентам по старой цене!

Пока вы тестируете Copilot, другие уже учатся строить AI-агентов, которые реально работают на бизнес. Хватит отставать!

Наш курс — это концентрат практики по LangChain и RAG. Улучшенная версия, доработанная по отзывам первого потока.

📆 Старт — 15 сентября.

💸 Цена 49 000 ₽ — только до 24 августа.

👉 Зафиксировать цену
😁1
This media is not supported in your browser
VIEW IN TELEGRAM
PHP TUI

Фреймворк для создания консольных приложений на PHP с псевдографическим пользовательским интерфейсом.

🔗 Github

Библиотека пхпшника

#инструменты
👍10
🚀 Тюнинг производительности PHP-FPM

Правильная настройка PHP-FPM имеет решающее значение для эффективного использования ресурсов сервера. Вот несколько ключевых параметров для оптимизации производительности:

🔧 Основные параметры:
pm = dynamic
Управляет количеством рабочих процессов. В режиме dynamic количество процессов изменяется в зависимости от нагрузки сервера.
pm.max_children = 1000
Максимальное количество рабочих процессов. Высокие значения могут привести к ошибкам из-за нехватки памяти. Пример: для 1000 процессов × 100MB/процесс потребуется 100GB RAM.
pm.start_servers = 80
Количество процессов, которое будет запущено при старте PHP-FPM для быстрой обработки начальной нагрузки.
pm.min_spare_servers = 40
Минимальное количество «запасных» процессов, которые должны оставаться в ожидании.
pm.max_spare_servers = 120
Максимальное количество неактивных процессов. Если их больше, лишние процессы будут завершаться.
request_terminate_timeout = 300s
Ограничение времени для запроса — если выполнение длится более 5 минут, процесс будет завершен.
request_slowlog_timeout = 5s
Все запросы, которые выполняются более 5 секунд, записываются в лог для анализа производительности.

📊 Рекомендации:
Для серверов с меньшим объёмом памяти, например 8GB RAM, настройте:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

Эти настройки обеспечат баланс между производительностью и безопасностью, сохраняя ресурсы для других служб.

👉 Поделитесь этим постом с коллегами!

🔗
Ссылка на статью

Библиотека пхпшника
👍16