Продуктивність 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