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

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

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

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

    С 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.file_cache_only=0 в памяти, а кеш-файл используется в качестве резервной копии (что также ускоряет 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 !

    В соответствии с документами PHP :

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

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

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