Обосную тезисами 0-летней давности: * FPM не умеет в graceful reload до сих пор, поэтому на выбор есть два вкуса субстанции: ждать завершения подключений до талого, или убивать мастера. Заменять мастера как nginx оно не умеет. * Запуск подпроцессов сделан из рук вон плохо — на линуксе есть хотя бы select, который позволяет нормально читать и писать по пайпам, на винде же — везде велосипеды и костыли (рекомендую посмотреть в symfony/process, но не на ночь). * Баги в OpCache живут вечно — падение из-за побитого стека при opcache.fast_shutdown=1 как происходило на 5.3, так и проявляется на 8.2. * Запуск персистентных процессов с ReactPHP приводит к очень интересным проблемам. Например, подключение к MySQL через PDO невозможно инвалидировать, только удалить через GC, когда счётчик ссылок упадёт до нуля. В итоге приходится любоваться ошибками, связанными с тем, что соединение отключилось по тайм-ауту. * Переход с 7.4 на 8.2 вызвал много проблем тем, что передача null в функции, которые хотят string, теперь deprecated. На самом деле проблем при переходе было ещё больше. * Генераторы как текли при их появлении, так и текут до сих пор. * array_map, array_filter и array_reduce не принимают iterable, в итоге передача в них генераторов вызывает падение с TypeError. * Все классы находятся в одном глобальном пространстве by design, поэтому был придуман костыль с неймспейсами, который не решает проблему модульности. Более того — все анонимные классы на самом деле имеют имя внутри глобального неймспейса, которое генерируется в рантайме.На самом деле проблем больше, но комьюнити их героически решает по мере поступления. Те же PSR-7 и PSR-15 как пример — это вообще должно было быть частью ядра языка, а никак не нашлепкой сбоку.
|