Подтвердить что ты не робот

Zend OPCache - opcache.enable_cli 1 или 0? Что оно делает?

В документации говорится, что "в основном используется для отладки", что заставило бы меня подумать: "Никогда не включайте его, если у вас нет проблемы и вам нужно выполнить некоторую отладку", однако, прочитав в основном все, что я могу найти, говорит, что разрешить это "opcache.enable_cli 1", но почему? Я не мог найти никакой информации по этому вопросу, поэтому, если кто-нибудь знает, почему я должен включить ее, если в документации в основном говорится, чтобы она была на 0?

4b9b3361

Ответ 1

Оставьте это. Это прежде всего там для использования при отладке проблем с самим OPcache.

Параметр opcache.enable_cli позволяет PHP OPcache при запуске PHP-скриптов из командной строки (используя команду php). Однако имейте в виду, что для PHP 5.x расширение OPcache работает, сохраняя кэшированные коды операций в памяти текущего процесса. Это полезно только тогда, когда процесс, в котором работает PHP, будет обрабатывать несколько запросов, которые могут повторно использовать эти коды операций, например, на веб-сервере или в FastCGI. Для процесса, такого как PHP CLI, который запускает один "запрос" и выходит, он просто уничтожает память и время.

Ответ 2

Благодаря PHP7 и файловому кешированию теперь имеет смысл включить opcache для CLI. Наилучшей возможностью было бы иметь отдельный php.ini для CLI со следующей конфигурацией:

opcache.enable=1
opcache.enable_cli=1
opcache.file_cache="/tmp/php-file-cache"
opcache.file_cache_only=1
opcache.file_cache_consistency_checks=1

opcache.file_cache_only=1 гарантирует, что opcache в памяти отключен и используются только файлы, что и требуется для CLI. Это должно немного увеличить время выполнения.

В php.ini для FPM вы захотите иметь те же настройки, но использовать opcache.file_cache_only=0, поэтому в оперативной памяти используется opcache, а файловый кеш используется в качестве запасного (что также ускоряет работу FPM, поскольку файл кэш уменьшает время прогрева при перезапуске FPM или сбрасывании opcache, потому что кэшированные файлы остаются).

Таким образом, CLI и FPM совместно используют файловый кеш, а FPM использует кэш в памяти в качестве второго основного кеша для максимальной скорости. Отличное улучшение в PHP7! Просто убедитесь, что вы выбрали каталог для opcache.file_cache который CLI и FPM могут писать, и что один и тот же пользователь выполняет запись/чтение.

ОБНОВЛЕНИЕ 2017

Я бы не рекомендовал больше использовать файловый кеш с FPM (используйте его только для CLI), потому что при установке opcache.validate_timestamps=0 невозможно сбросить кэш - файловый кеш не позволяет PHP-FPM распознавать любые изменения, потому что opcache_reset() или даже полный перезапуск PHP-FPM не влияют на файловый кэш и не имеют эквивалента для файлового кэша, поэтому измененные сценарии никогда не замечаются. Я сообщил об этом как " ошибка "/" запрос функции " в марте 2016 года, но в настоящее время это не рассматривается как проблема. Просто будьте осторожны, если вы используете opcache.validate_timestamps=0 !

Ответ 3

По PHP docs:

opcache.enable_cli boolean позволяет кэшировать код операции для версии CLI для PHP. Это в основном полезно для тестирования и отладки.

Поэтому он должен быть отключен, если вам это действительно не нужно.

Это может быть полезно, если у вас есть какой-то долгосрочный процесс миграции из командной строки (лично я протестировал OPcache v7.0.3 для CLI, выполнив некоторую обширную миграцию script, и я не видел много улучшения производительности).