Требуется разъяснение по альтернативному кешу PHP - PullRequest
1 голос
/ 04 января 2012

Я играю с альтернативным кэшем PHP APC, и я не могу найти ответы на некоторые из моих вопросов.

  1. Еслифайл был загружен в кэш байт-кода APC автоматически или неявно через apc_compile_file () , знает ли об этом функция php include ?Включает ли использование кеша, когда ему нужен файл, а не доступ к файлу с диска?
  2. Если так, как я могу это проверить, чтобы увидеть, работает ли он?Что-то, что показывает мне, что файл на диске не был доступен, было бы достаточно хорошо.
  3. Некоторые из файлов, автоматически загружаемых в системный кэш APC, являются просто чистыми файлами HTML, или 99% HTML, с некоторымиPHP переменные (файлы шаблонов).Они не занимают много места в кеше APC, но все же, есть ли способ исключить файлы или целые папки?Сказать APC даже не рассматривать возможность их загрузки?
  4. Я использовал базу данных SQLite или Redis в качестве бэкенда обработчика сохранения сеанса, в зависимости от проекта.Часто не имеет смысл использовать APC и Redis в одном проекте.Что вы думаете о хранении данных сеанса в APC?

Спасибо,

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Для 1 и 2 у меня нет доказательств, но я считаю, что кэширование выполняется и для включенных файлов. Иначе это просто не будет иметь смысла. Существуют огромные приложения с единой точкой входа и другими файлами, включенными на разных уровнях. Не думаете ли вы, что все эти приложения вообще не могут использовать APC?

Для чистых HTML-файлов я бы предложил вам использовать readfile() вместо include() и, таким образом, вообще не включать кеширование.

Для файлов с несколькими переменными php (файлы шаблонов) вы ДОЛЖНЫ хранить их в кеше, поскольку весь смысл кеширования - пропуск части синтаксического анализа. В противном случае вы заставите PHP все время анализировать эти файлы, я думаю, это не ваше желание.

Вы можете использовать APC для хранения сессий. Я не знаю, лучше это или нет. Просто попробуйте и посмотрите, что лучше вам подходит. Я считаю, что строгих стандартов не существует.

1 голос
/ 04 января 2012
  1. В зависимости от директивы apc.stat перед извлечением кода операции файла из памяти php проверит, был ли файл изменен (запрашивается только статистика, чтение содержимого не выполняется)
  2. Вы можете установить apc.stat как 0. Включите некоторый файл, удалите его, и ничего не должно произойти. Скрипт должен работать, так как файл не был удален
  3. Да, используйте apc.filters
  4. Вероятно, это будет немного быстрее, но APC - это просто кеш, поэтому он не гарантирует, что данные будут существовать в любой конкретный момент, когда он должен
...