<? phpukraine СТАТТІ
⌕Пошук по платформі

Продуктивність PHP: профілювання й оптимізація

OPcache і JIT, N+1, кеш-стратегії, черги, профілювання під навантаженням. З цифрами до і після.

НАЙНОВІША ПРОДУКТИВНІСТЬ 1 жовтня 2026

Індекси PostgreSQL для PHP-розробника: частинні, покривні, GIN і BRIN

Міграції в Laravel і Doctrine створюють btree і більше нічого. Але половина проблемних запитів у PHP-застосунку лікується індексом іншого типу: частинним на активні рядки, покривним з INCLUDE, за виразом lower(), GIN для jsonb або BRIN на таблиці подій. Розбираємо, коли який і як не додати п'ятий індекс, яким ніхто не користується.

РP Редакція phpukraine · 10 хв читання
9 статей
ПРОДУКТИВНІСТЬ 1 жовтня 2026 Індекси PostgreSQL для PHP-розробника: частинні, покривні, GIN і BRIN Міграції в Laravel і Doctrine створюють btree і більше нічого. Але половина проблемних запитів у PHP-застосунку лікується індексом іншого типу: частинним на активні рядки, покривним з INCLUDE, за виразом lower(), GIN для jsonb або BRIN на таблиці подій. Розбираємо, коли який і як не додати п'ятий індекс, яким ніхто не користується. РP Редакція phpukraine · 10 хв ·PostgreSQL ·Індекси ПРОДУКТИВНІСТЬ 29 вересня 2026 HTTP-кеш для PHP-застосунку: Cache-Control, ETag і CDN перед Laravel Запит, який не дійшов до php-fpm, коштує нуль. Але щоб віддати відповідь з edge або з браузера, треба правильно проставити Cache-Control, навчитися рахувати ETag до рендеру, а не після, і не покласти сторінку залогіненого користувача у спільний кеш. Розбираємо механіку на Laravel 13 і Cloudflare. РP Редакція phpukraine · 8 хв ·HTTP-кеш ·CDN ·Cloudflare ПРОДУКТИВНІСТЬ 27 вересня 2026 Автозавантаження в продакшені: classmap, authoritative і APCu у Composer Кожен клас, який застосунок бачить уперше, проходить через Composer\Autoload\ClassLoader. Без classmap це серія звернень до файлової системи на кожен промах, і рахунок іде на сотні звернень за запит. Розбираємо, що насправді роблять --optimize-autoloader, --classmap-authoritative і --apcu-autoloader, чому authoritative тихо ламає типовий шаровий Dockerfile, і як виміряти ефект, а не вгадати його. РP Редакція phpukraine · 8 хв ·Composer ·Автозавантаження ПРОДУКТИВНІСТЬ 12 вересня 2026 Redis у PHP-застосунку не лише як кеш: черги, ліміти, блокування, лічильники Redis заводять під кеш, а за пів року в ньому живуть сесії, черги, локи й лічильники з несумісними вимогами до втрати даних. Розбираємо атомарність лічильників і чому `INCR` + `EXPIRE` рано чи пізно забанить користувача назавжди, де ламаються розподілені локи, що насправді робить redis-драйвер черги в Laravel і коли його вже мало, які дані в Redis класти не варто і як налаштувати eviction, щоб під тиском памʼяті втратити кеш, а не чергу. РP Редакція phpukraine · 9 хв ·Redis ·Черги ·Rate limiting ПРОДУКТИВНІСТЬ 12 вересня 2026 N+1 у Doctrine та Eloquent поруч: одна проблема, два набори інструментів Ліниві звʼязки протікають однаково в обох ORM, а лагодяться по-різному: Eloquent добирає дані окремим запитом WHERE IN, Doctrine тягне їх fetch join'ом у той самий SQL. Три типові сценарії - список зі звʼязком, вкладені звʼязки й агрегати - з кодом до і після в Laravel 13 та Doctrine ORM 3. РP Редакція phpukraine · 8 хв ·N+1 ·Doctrine ·Eloquent ПРОДУКТИВНІСТЬ 6 вересня 2026 PHP-FPM, FrankenPHP чи Octane: що обрати для Laravel і Symfony у 2026 Порівняння трьох моделей виконання без чужих бенчмарків: що саме випливає з архітектури кожної — які межі паралелізму вона задає, що ламається, коли застосунок перестає вмирати після запиту, і як змінюється деплой. У кінці — чекліст, за яким рішення приймається за пів години, а не за спринт. РP Редакція phpukraine · 9 хв ·FrankenPHP ·Octane ·PHP-FPM ПРОДУКТИВНІСТЬ 5 вересня 2026 Кеш у Laravel без застарілих даних: теги, lock і інвалідація по подіях Кеш віддає старе не тому, що «TTL завеликий», а тому що інвалідація має дірки: масові апдейти повз модельні події, скидання всередині транзакції, дві паралельні перебудови одного ключа. Розбираємо, як насправді працюють теги в Redis, коли вони не потрібні, як накрити перебудову атомарним локом і куди правильно вішати інвалідацію. РP Редакція phpukraine · 7 хв ·Кеш ·Redis ·Laravel ПРОДУКТИВНІСТЬ 4 вересня 2026 EXPLAIN для PHP-розробника: як читати план запиту в PostgreSQL План запиту — не магія, а дерево вузлів із двома числами на кожному: скільки планувальник очікував і скільки насправді сталося. Розбираємо, чим Seq Scan відрізняється від Bitmap, чому оцінка розходиться з фактом, як порядок колонок у складеному індексі вирішує все і які плани дають типові конструкції Eloquent — whereHas, paginate, whereDate, withCount. РP Редакція phpukraine · 8 хв ·PostgreSQL ·EXPLAIN ·Індекси ПРОДУКТИВНІСТЬ 4 вересня 2026 OPcache, preload і FrankenPHP: що реально прискорює Laravel у контейнері Розбираємо по кроках, що відбувається з PHP-кодом на кожному запиті в Docker-образі: які параметри OPcache справді важать, що дає opcache.preload і де він ламається, чому worker mode FrankenPHP знецінює половину цих налаштувань і як виміряти ефект так, щоб цифри щось означали. РP Редакція phpukraine · 8 хв ·OPcache ·FrankenPHP ·Docker