OPCache работает с несколькими апачами

В моем приложении я использую несколько Apache с балансировкой нагрузки. Я притворяюсь, что начал использовать OPCache с opcache.validate_timestamps = off для повышения производительности, но мои сомнения / опасения связаны с opcache.validate_timestamps = off кэша. Когда я меняю файл, нужно ли делать сброс OPCache в каждом Apache?

Всего 1 ответ


OPCache очищается при перезапуске модуля / демона PHP (например, перезапуск Apache для mod_php или перезапуск PHP-FPM и т. Д.).

Вы можете вручную сбросить opcache, вызвав opcache_reset() из сценария php, однако это необходимо выполнить в Apache / PHP-FPM; Вы не можете сделать это из командной строки. Один из способов сделать это - настроить ограниченный каталог, доступный только с самого сервера или доверенного статического IP-адреса (например, <directory "dir">Require local</directory> ) и поместить туда файл php - или используя аналогичный для ограничения файла - затем с помощью браузера с сервера или скручивания через ssh / cmd (без заголовка) вызвать скрипт для сброса кеша без перезапуска.

В качестве альтернативы PHP предоставляет команду opcache_invalidate() , но это может привести к проблемам (подробнее о потенциальных проблемах с opcache). Если ваши развертывания написаны по сценарию, можно сделать недействительными отдельные измененные файлы.

validate_timestamps не обязательно «изначально» плох, но для производственных серверов (где вы редко запускаете обновления и уже можете перезапускать apache / php-fpm) это может быть немного излишним.

https://www.php.net/manual/en/function.opcache-reset.php

https://www.php.net/manual/en/function.opcache-invalidate.php

Более старая запись в блоге, в которой описываются некоторые потенциальные проблемы, не может гарантировать ее точность.