Pull to refresh

Comments 15

UFO just landed and posted this here
opcache проверяет, изменились ли исходные файлы, и при обнаружения изменений аннулирует их кэши.
Не обязательно, в настройках opcache.validate_timestamps как раз для управления этим поведением.
Но если у нас есть конкретный список файлов, почему нельзя было сразу сделать автоматическую их перезагрузку при изменении кода?
Ведь по сути нет разницы, сделает это сам сервер по watch(files) или мы его вручную прибьем.

Иначе теряется вся суть PHP (оживление и умирание при запросе).
PHP ничего не отслеживает при изменении файлов, просто если стоит opcache.validate_timestamps, то при попытке использовать файл, php обратиться к диску и сверит дату изменения файла. То есть это дополнительное время на медленную io-операцию.
Preload фактически расширяет возможность не сбрасывать кеш опкеша, позволяя это для конкретных файлов (как часто у вас на продакшн меняется содержимое папки vendor? да даже на дев), в то время как до этого opcache.validate_timestamps кешировал намертво всё.

И суть умирания после запроса не только в этом, а больше в изоляции запросов друг от друга.
Preload фактически расширяет возможность не сбрасывать кеш опкеша, позволяя это для конкретных файлов (как часто у вас на продакшн меняется содержимое папки vendor? да даже на дев), в то время как до этого opcache.validate_timestamps кешировал намертво всё.
opcache намертво не кэшировал, кэш можно было сбрасывать как для всех файлов opcache_reset так и для отдельных opcache_invalidate.

Как настроить разные opcache.preload для разных виртуальных хостов Apache или Nginx, использующих одинаковую версию PHP?

разнести по разным fpm пулам?

Небольшая неточность. Не 13 и 17%, а 13 и 16%.
А по теме — хорошая штука.
Хотя прирост конечно не такой как между 5.6 vs 7.3 :)
8.0 pho кроме JIT чем то обещает ещё удивить нас?
UFO just landed and posted this here
Я так понимаю это перевод какой то статьи? Вопросы тут не уместны?
А то как бы:
«Допустим, вы хотите предварительно загрузить какой-нибудь фреймворк. Пусть это будет Laravel. В этом случае ваш скрипт должен просмотреть все PHP-файлы в директории vendor/laravel и добавить их поочередно.»
Но пример реализации потом не для Laravel показан.

Какая разница? Там пример на показать как это вообще работает.

Если класс загружается в память — интересно, будут ли статичекие свойства сохранятся между запросами?
Если да — то можно было бы реализовать какой то DatabaseConnectionPoolManager. Давно мечтаю о подобном
Посмотрите на swoole или spiral/roadrunner — то, что вам хочется. Уже сейчас :)
Спасибо за наводку!
Есть еще amphp и reactphp — и то и другое позволяет делать постоянно запущенные, асинхронно работающие приложения на PHP. Первый немного активнее развивается по-моему (больше асинхронных оберток под разные БД и прочее). Они могут части друг-друга использовать (через адаптеры). Это уже большой новый мир, много пакетов и все отлично работает (особенно если думать про возможные утечки памяти и следить за этим).
Sign up to leave a comment.