Как заставить APC (PHP Cache) работать?

Я читал о APC, что он ускоряет работу нескольких сайтов php файлов. Поэтому у меня есть этот конкретный проект на PHP с большим количеством файлов, и я обнаружил, что require_once и разбор только определений классов (без их выполнения) занимает больше времени.

Итак, я установил APC на моем сервере CentOS 5. Я переместил apc.php на свой веб-сервер и отобразил

Hits: 1 (50.0%)
Misses: 1 (50.0%)

Cached Files    1 (281.1 KBytes)

И я могу перейти на сайт и изменить подстраницы и т.д., и apc.php все еще показывает только один кешированный файл

И в phpinfo() он показывает, что:

Поддержка APC

Я не знаю, что делать. Работает ли APC (например, phpinfo() sais) или нет? Только один кешированный файл не так много после просмотра некоторых страниц на моем веб-сайте.

И еще больше, как диагностировать ошибки и убедиться, что APC работает? Я просматривал

apc.mmap_file_mask/tmp/apc.QnLqNf/tmp/apc.QnLqNf

Directory/tmp, но у меня нет файлов apc, как это указано в phpinfo.

Пожалуйста, помогите мне проверить, работает ли APC, а если нет, что может быть проблемой.

Ответы

Ответ 1

APC можно использовать двумя способами:

  • Как кеш-код операции. У вас есть поддержка, поэтому она работает; и
  • Как общий кеш. Вы должны явно использовать API для этого.

(1) является основным преимуществом. Это сокращает время выполнения script, сохраняя результаты кода операции "компиляции" сценариев.

Как для этого, из инструкции по установке:

Примечание.. В Windows APC требуется временный путь для существования и доступен для записи через веб сервер. Он проверяет TMP, TEMP, Переменные среды USERPROFILE в этот порядок и, наконец, пытается WINDOWS, если ни один из них не является набор.

Таким образом, вам не нужно это (или видеть какую-либо активность) в CentOS.

При этом require/include лучше, чем require_once/include_once/autoload, но это имеет значение только в том случае, если вы делаете это с сотнями файлов.

Ответ 2

Является ли ваш сайт в основном одним файлом PHP, который затем включает или требует других файлов? Это может быть зарегистрировано как один файл. Кроме того, насколько мне известно, условная логика include/require может не кэшироваться как ожидалось, хотя это может быть просто слухом!

Ответ 3

Проверяли ли вы журналы журнала? посмотрите /var/log/apache 2/error.log или, тем не менее, его имя под вашим дистрибутивом.

Кроме того, попробуйте сделать 2-3 php файла, наведите на них указатель, а затем проверьте, сколько файлов php кэшируется кэшем APC.

Не уверен в APC, но я бы рекомендовал Eaccelerator (http://eaccelerator.net/). Я проверил его некоторое время назад и действительно сделал разницу.

Ответ 5

В ветке APC 3.1.5dev появилась новая опция, позволяющая отключить кеш-код операции. По умолчанию он отключен.

Попробуйте добавить это в конфигурационный файл APC:

apc.enable_opcode_cache=1

Ответ 6

http://www.litespeedtech.com/support/forum/showthread.php?t=3761

"APC не работает с PHP suEXEC, так как каждый PHP-процесс будет использовать свою собственную кэш-память, а не shared.

Вы должны попробовать eAccelerator +/dev/shm, если вам нужно использовать PHP suEXEC. "

хорошо получилась такая же проблема, кажется PHP suEXEC + APC проблема