В документации говорится, что «в основном используется для отладки», что заставило бы меня подумать «никогда не включайте его, если у вас нет проблемы, и вам нужно выполнить некоторую отладку», однако, прочитав в основном все, что я могу найти, говорит, что нужно включить его »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, запустив некоторый расширенный скрипт миграции, и я не видел больших улучшений производительности).