Самоучитель: PHP под капотом: runtime и стандартная библиотека
Глава 20 из 20VI. Эксплуатация и миграция170 минут

Глава 20. Миграция на PHP 8.5 и выпуск Pulse

Обновление runtime — управляемое изменение платформы: сначала наблюдаем несовместимость, затем исправляем, тестируем обе ветки и только потом меняем production.

После главы вы сможете
  • строить migration inventory
  • проверять deprecations
  • репетировать rollback

Актуальная ветка и цель

На дату проверки PHP 8.5 находится в активной поддержке до конца 2027 года и получает security support до конца 2029 года. PHP 8.4 остаётся активно поддерживаемым до конца 2026 года. Эти даты сверяются перед планированием, потому что они являются внешним фактом.

Pulse сохраняет минимальную платформу 8.4, пока production не обновлён. Новые фрагменты 8.5 изолированы в ветке и не попадают в исполняемый код WebAssembly сайта, который работает на PHP 8.4.

Путь миграции

От инвентаризации к релизуКаждый шаг создаёт доказательство; production не становится первым местом проверки расширения или зависимости.Inventoryruntime/extDeprecationsE_ALLMatrix8.4/8.5ArtifactlockedCanarysignalsPromoterollback ready
Каждый шаг создаёт доказательство; production не становится первым местом проверки расширения или зависимости.

Инвентаризация платформы

composer show --platform и check-platform-reqs показывают PHP и ext-* требования. Отдельно фиксируются SAPI, ini, FPM, OPcache, драйвер базы и системные библиотеки. Composer config.platform полезен для разрешения зависимостей, но не устанавливает runtime и способен скрыть отсутствие реального расширения без финальной проверки.

Матрица зависимостей включает приложение, dev tools и production extensions. Заброшенный пакет не прикрывается игнорированием platform requirement: его заменяют или принимают риск явно.

Что проверять в PHP 8.5

Migration guide перечисляет несовместимости и deprecations: неканонические cast-имена, backtick alias для shell_exec, устаревшие __sleep/__wakeup и другие изменения. E_ALL запускается в CI, а каждое предупреждение получает владельца и срок.

Новые URI API, pipe operator, clone with и NoDiscard принимаются только там, где улучшают контракт. Обновление не обязано переписывать весь код ради демонстрации синтаксиса.

Артефакт, canary и rollback

CI выполняет composer install по lock, platform checks, static analysis, unit и integration tests на 8.4 и 8.5, затем собирает неизменяемый артефакт. Production не запускает composer update.

Canary получает малую долю запросов и сравнивает error rate, latency, memory и бизнес-исходы. Rollback возвращает предыдущий runtime и артефакт, но схема и форматы данных обязаны оставаться совместимыми. Репетиция проводится до релиза.

Итоговый проект

Соберите Pulse целиком: CLI и HTTP adapters, typed Event, streaming NDJSON, bounded collections, atomic reports, PDO batch+cursor, HMAC export, localized view, worker и observability. Для каждого решения приложите отрицательный тест и эксплуатационный сигнал.

  • Ни один пользовательский путь не include/require.
  • Каждый внешний формат версионирован.
  • Rollback выполнен в тестовом окружении.
Локальный прогресс

Закрепите материал

Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.

Контрольная карта лаборатории

Выполнено: 0 из 3

Локальный тест

1. Устанавливает ли Composer config.platform реальный PHP?
2. Когда вводить синтаксис PHP 8.5?

Перелинковка со справочником

Проверка актуальности

  • php.nethttps://www.php.net/supported-versions.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • php.nethttps://www.php.net/manual/en/migration85.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • getcomposer.orghttps://getcomposer.org/doc/articles/composer-platform-dependencies.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • getcomposer.orghttps://getcomposer.org/doc/03-cli.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.

Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .

Данные этого сервиса

Настройки cookie и локальных данных

Аналитика

Текущий статус: не выбран. До согласия обе аналитические системы не загружаются.

Локальные данные

Удаление затрагивает только ключи PHP-сервиса в этом браузере и требует подтверждения.

Политики

Политика конфиденциальности · Политика использования файлов cookie