Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter – Telegram
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11K subscribers
1.52K photos
25 videos
26 files
4.24K links
Все самое полезное для пхпшника в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
🧠 Лайфхак: кешируйте config и routes в Laravel для максимальной скорости

⚙️ Что даёт кеширование
🔄 При кешировании конфигурации — все файлы из config/.env) объединяются в один — Laravel не читает и не парсит множество отдельных файлов при каждом запросе.
🚀 При кешировании маршрутов — все определения роутов компилируются в один файл. При запросе Laravel сразу загружает этот кеш, вместо повторного парсинга маршрутов.
Это значительно снижает накладные расходы на загрузку конфигураций и роутов, ускоряя старт приложения и уменьшая время обработки запросов.
🧰 Как включить кеш


php artisan config:cache #кеширует конфигурацию

php artisan route:cache #кеширует маршруты


Если вы внесли изменения в конфиги или роуты — перед новым запуском надо очистить и пересоздать кеш:


php artisan config:clear
php artisan route:clear


И потом снова:


php artisan config:cache
php artisan route:cache


Когда это разумно использовать

- В production или staging-средах, когда структура проекта стабильна, конфиги и маршруты уже настроены.
- В проектах с большим количеством конфигураций и маршрутов — там выигрыш по скорости особенно заметен.

⚠️ На что нужно обратить внимание

- Если вы используете closure-роуты (анонимные функции) — кеш маршрутов не будет работать корректно. Для кеша маршрутов нужно, чтобы все роуты были описаны через контроллеры.
- После изменений в конфигурациях или .env — не забудьте пересоздать кеш: иначе Laravel может продолжить использовать старые значения.
- ⚙️ В рабочем (dev) окружении: кеш может мешать быстрому тестированию изменений, поэтому часто кеш отключают на время разработки.

🔄 Как включить кеширование в процесс деплоя / CI/CD

- Добавьте команды config:cache и route:cache в скрипт деплоя — при выкладке на production они будут выполняться автоматически.
- После деплоя — проверьте, что кеш актуален, особенно если были изменения конфигов или роутов

Библиотека пхпшника
5👍3
🤖 ChatGPT выключен, а работа идёт как обычно

В мире разработки всё чаще говорят про AI, который помогает писать код быстрее и качественнее. Однако, встречаются примеры, когда выключение Copilot не приводит к заметным потерям в работе.

Возможно, скиллы и понимание задач дают больше, чем автодополнение от AI.

💬 Как думаете не отвлекают ли эти ИИ? Или всё-таки с ними куда лучше?

🔸 AI-агенты для DS-специалистов
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
💬Знаете ли вы, что вы можете использовать scan в Laravel для разбора строки, введенной в коллекцию, в соответствии с форматом, поддерживаемым встроенной функцией PHP sscanf? 🚀

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

#vardump
👍1
PHP жив, а твоя карьера?

Шутка. PHP будет жить вечно. Но расширять кругозор полезно всегда. Математика и ML — это то, что отличает инженера от кодера.

Залетай на наш курс с живыми вебинарами. Мы объясняем сложные вещи просто.

Что будет:

— Матрицы и векторы (это как массивы, только с суперсилой);
— Линейная регрессия (научимся предсказывать данные);
— SVD-разложение (сделаем свою рекомендалку).

Практика на Python, но математика везде одинаковая.

Успевай до 9 декабря:
👉 https://clc.to/LojFzw
🥱5👍1
💬 Ежемесячная ветка PHP-разработчиков — декабрьское обновление

Продолжаем традицию — открываем новую декабрьскую ветку 👇

Что можно приносить сюда сейчас:
🧩 свежие фрагменты кода, которые вызывают вопросы или гордость
🔍 кейсы из продакшена: узкие места, memory leaks, странности с очередями
🛠️ pet-projects, библиотеки, пакеты: покажите, что сделали за месяц
🧠 вопросы по DDD, микросервисам, тестированию, CI/CD
⚙️ опыт миграции на PHP 8.3/8.4, проблемы совместимости, нюансы производительности

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

Пусть эта ветка остаётся местом для профессионального диалога, где ценят практику, инженерное мышление и точные решения ❤️

👇 Делитесь вашими обновлениями, задачами и победами за последний месяц!

Библиотека пхпшника
💻 Подборка новостей по PHP за неделю:​

🔹 Laravel 12.40.2 — очередь теперь можно приостанавливать на заданное число секунд. Это развитие функции из 12.40, где появилась возможность ставить очередь на паузу и возобновлять её без ограничения по времени.

🔹 Mailviews (Early Access) — запущен ранний доступ к инструменту для создания адаптивных, стабильных e-mail-шаблонов без мучительной ручной верстки и бесконечных проверок в разных клиентах.

🔹 Symfony 7.4.0 — релиз новой стабильной версии с заметными улучшениями. В серии «New in Symfony 7.4» доступны разборы ключевых возможностей.

🔹 Symfony 24–30 ноября — выпущены финальные Symfony 7.4.0 и 8.0.0. Прошла SymfonyCon Amsterdam 2025, опубликованы Black Friday-скидки экосистемы.

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

#свежак
👍1
💡Совет по Laravel: Привязка моделей в Form Request

Привязка моделей к маршрутам позволяет вставлять экземпляры моделей непосредственно в маршруты. Обычно она используется в контроллере, но знаете ли вы, что можно получить доступ к экземпляру модели и в запросе формы?

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

#vardump
👍1
📈 Почему память в PHP-воркерах только растёт — и это нормально

Если вы переходите с PHP-FPM на RoadRunner, Laravel Queue или Symfony Messenger — вы увидите один и тот же эффект:

Память растёт ступеньками и никогда не падает.
40 → 200 → 350 МБ… и так до перезапуска.
Unset, GC, collect_cycles() — не помогают.

Это не утечка. Это архитектура PHP.

🧬 Почему так происходит

PHP использует Zend Memory Manager:
он выделяет память крупными чанками (2–4 МБ) и не отдаёт их ОС назад, даже если внутри всё освобождено.

Каждый пик — новый baseline.
Обработали 100k записей → память выросла → процесс будет держать этот объём до конца жизни.

🔥 Что вызывает «разбухание»

ORM ->all() или ->get() на десятки тысяч записей

большой файл в file_get_contents()

накопление массивов

сложные eager-loading графы ORM

🛠 Как проектировать правильно


✔️ Стриминг вместо коллекций:
User::lazy()->each(fn($u) => processUser($u));


или:
Record::chunk(100, function ($rows) {
foreach ($rows as $r) processRecord($r);
});


✔️ Doctrine:
foreach ($q->toIterable() as $u) {
process($u);
$em->detach($u);
}


✔️ Изоляция тяжёлых операций в функцию — память освобождается при выходе из scope.

✔️ Ротация воркеров — обязательна:

Laravel:
php artisan queue:work --max-jobs=1000


RoadRunner:
pool:
max_jobs: 1000


Messenger:
messenger:consume --limit=1000


📌 Выводы

🔸 Память в долгоживущем PHP-процессе не уменьшится сама по себе.

🔸 Проектируйте под пиковое потребление.

🔸Используйте стриминг, чанки, detach().

🔸 Регулярно перезапускайте воркеры.

🔗 Medium

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124
PostgreSQL vs MongoDB — что выбрать?

В разработке часто сталкиваешься с вопросом: какую СУБД выбрать — реляционную или документо-ориентированную?
Но правильный вопрос не «какая база лучше», а «какая подходит под ваши задачи». Обе технологии заслужили доверие и популярность — просто они решают разные задачи.

🔎 Основные отличия
🛡️ PostgreSQL — реляционная СУБД с таблицами, строгими схемами и SQL, хорошо подходит для надёжных, структурированных моделей.
🌐 MongoDB — документно-ориентированная NoSQL-СУБД, хранит данные как JSON-/BSON-документы без жёсткой схемы — больше гибкости для меняющихся, динамических данных.
PostgreSQL обеспечивает ACID-транзакции, целостность, сложные связи и надёжность.
MongoDB даёт гибкость, масштабируемость и простоту схемы, особенно когда структура данных может изменяться.

Когда PostgreSQL — ваш выбор
🟦 Структурированные данные, чёткие связи между сущностями.
🟦 Необходимы транзакции, консистентность, строгие ограничения (финансы, учёт, бухгалтерия, критичные операции).
🟦 Сложные запросы, отчёты, JOIN-ы, аналитика, отчётность.
🟦 Долгосрочное хранение, стабильность, предсказуемость схемы и данных.

Когда MongoDB — лучший вариант
🟩 Данные меняются часто; структура может эволюционировать, добавляются новые поля, типы записей.
🟩 Необходима гибкость: документы, JSON-объекты, агрегации, неструктурированные или полуструктурированные данные.
🟩 Требуется горизонтальное масштабирование, распределённое хранилище, высокая нагрузка на запись/чтение.
🟩 Быстрая разработка, прототипы, MVP, где хочется избежать долгих миграций схем.

👉 Полная статья с примерами и различными сценариями

Библиотека пхпшника
2
Opis/closure

Это библиотека для PHP, которая даёт возможность сериализовать (преобразовать в строку/байты) замыкания (closures / анонимные функции), а также анонимные классы и произвольные данные.

По умолчанию PHP не поддерживает сериализацию замыканий: попытка вызвать serialize() на Closure приводит к ошибке.
Opis/closure обходит это ограничение, обёртывая замыкание — и благодаря этому Вы можете сериализовать, передавать, хранить, а потом восстанавливать функцию и её контекст.

Основные возможности
🔸 Поддержка PHP 8.0+ (включая 8.5) — современный синтаксис, типы, readonly-свойства, атрибуты и пр.
🔸 Сериализация замыканий, анонимных классов, сложных объектов, включая структуры с круговыми ссылками.
🔸 Возможность «безопасного» сериализования: есть поддержка подписанных (signed) данных.
🔸 Не требуется каких-либо расширений PHP (например, FFI) — всё реализовано «на чистом PHP».
🔸 Универсальность: не просто для замыканий — можно сериализовать «любой сложный объект», что даёт гибкость.

📦 Где это используется — и зачем Вам может пригодиться
Фреймворки и библиотеки, которым нужно отложенно сохранять/восстанавливать функции — например, очередь задач, jobs, callback-хранение.
Если хотите передавать анонимные функции между процессами, сохранять их в БД, передавать через очереди — без описания «класса + метод».
При необходимости сериализовать объекты с нестандартным состоянием, содержащие функции или анонимные классы.
Для систем, где нужно «сохранить и восстановить» произвольное состояние (функции, контекст, данные), несмотря на ограничение PHP на сериализацию замыканий.

⚠️ Что важно учитывать
🔹 Библиотека поддерживает PHP 8.0+; если проект на более старой версии — могут быть ограничения.
🔹 Бывают нюансы с «безопасностью»: если используются подписанные сериализованные данные и разные ключи — при десериализации может быть ошибка.
🔹 Как и с любой подобной техникой — злоумелое использование (например, unserialize от данных из ненадёжного источника) — может быть рискованным.

🔗 Github

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