Документация apc.enable_cli
, которая определяет, следует ли активировать APC в режиме CLI, гласит: (цитирование) :
В основном для тестирования и отладки.
Установка этого включает APC для CLI
версия PHP. Под нормальным
обстоятельства, это не идеально
создать, заселить и уничтожить БТР
кеш на каждый запрос CLI, но для
различные тестовые сценарии полезно
быть в состоянии включить APC для CLI
версия PHP легко.
Возможно, APC будет хранить коды операций в памяти, но, поскольку исполняемый файл PHP умирает в конце скрипта, эта память будет потеряна: она не будет сохраняться между выполнениями скрипта.
Таким образом, кэш кода операции в APC бесполезен в режиме CLI: он ничего не оптимизирует, поскольку PHP все равно придется пересобирать исходный код для кодов операций при каждом запуске исполняемого файла PHP.
На самом деле APC не «оптимизирует»: стандартный способ выполнения PHP-скрипта выглядит так:
- прочитать файл и скомпилировать его в коды операций
- выполнить коды операций
APC сохраняет в памяти коды операций, поэтому выполнение PHP-скрипта становится следующим:
- чтение кодов операций из памяти (намного быстрее, чем компиляция исходного кода)
- выполнить коды операций
Но это означает, что у вас должно быть место в памяти для хранения кодов операций. При запуске PHP в качестве модуля Apache, Apache отвечает за сохранение этого сегмента памяти ... Когда PHP запускается из CLI, сегмент памяти не остается, поэтому он уничтожается в конце выполнения PHP.
(я не знаю, как именно это работает, но что-то в этом роде, по крайней мере, в принципах, даже если мои слова не очень "технические" ^^)
Или под «оптимизацией» вы подразумеваете нечто иное, чем кэш кода операции, например директива конфигурации apc.optimization ? Если это так, этот был удален в APC 3.0.13