PHP (PHP: Hypertext Preprocessor) — наиболее распространённый серверный язык для веб-разработки. По данным W3Techs (2023), PHP используется на 77% сайтов с известным серверным языком. PHP 8.x — версия с JIT-компилятором и существенно улучшенной системой типов по сравнению с PHP 7.x.
Ключевые нововведения PHP 8.x
| Версия | Год | Ключевые изменения |
|---|---|---|
| PHP 8.0 | 2020 | JIT компилятор, named arguments, match expression, union types, nullsafe operator (?->) |
| PHP 8.1 | 2021 | Enums, Fibers (корутины), readonly properties, never return type |
| PHP 8.2 | 2022 | Readonly classes, DNF types (A&B)|C, true/false/null как типы, deprecated dynamic properties |
| PHP 8.3 | 2023 | Typed class constants, json_validate(), Override attribute, granular DateTime exceptions |
JIT и производительность
JIT (Just-In-Time) компилятор в PHP 8.0 компилирует PHP-байткод в машинный код во время выполнения. В CPU-intensive задачах (математика, обработка данных) ускорение — до 3×. Для типичных веб-запросов с I/O (запросы к БД, файлы) прирост меньше — 10–20%, поскольку узкое место — I/O, а не вычисления.
PHP и хостинг
На большинстве хостингов PHP запускается через PHP-FPM (FastCGI Process Manager). Конфигурация пула в /etc/php/8.2/fpm/pool.d/www.conf. Ключевые параметры: pm.max_children (максимум параллельных процессов), pm.start_servers. На shared-хостинге версию PHP выбирают в панели управления (cPanel, ISPmanager).
Ключевые настройки php.ini для веб-приложений:
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 64M
post_max_size = 64M
opcache.enable = 1
opcache.memory_consumption = 128
История
PHP создан Расмусом Лердорфом (Rasmus Lerdorf) в 1993–1994 годах как набор Perl-скриптов для личного сайта. PHP 3 (1997) — переработка Зеевом Сурасски и Энди Гутмансом, появилось название «PHP: Hypertext Preprocessor». PHP 5 (2004) принёс полноценное ООП с Zend Engine 2. PHP 7 (2015) удвоил производительность за счёт Zend Engine 3. PHP 8.0 (2020) — JIT, PHP 8.3 (2023) — текущая актуальная версия.
На что обращать внимание
EOL (End of Life) версий: PHP 7.4 — ноябрь 2022, PHP 8.0 — ноябрь 2023, PHP 8.1 — декабрь 2025, PHP 8.2 — декабрь 2026. Использование EOL-версии на production — риск незакрытых уязвимостей. WordPress с PHP 8.2 работает полностью с версии WP 6.1+. Для Drupal 10 требуется минимум PHP 8.1. SQL-инъекции и XSS остаются актуальными независимо от версии PHP — защищает код, а не версия языка.
OPcache и ускорение
OPcache кэширует скомпилированный PHP-байткод в памяти: повторные запросы не требуют парсинга PHP-файлов. Прирост производительности для типичного WordPress — 30–50%. Настройка в php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
На production устанавливают opcache.validate_timestamps=0 — OPcache не проверяет изменения файлов на диске, всегда использует кэш. Для сброса кэша после деплоя: opcache_reset() через скрипт или перезапуск PHP-FPM.