Назад | Перейти на главную страницу

Кэш файлов APC не работает, но кеш пользователя в порядке

У меня только что есть VPS (с cPanel / WHM), чтобы проверить, какие выгоды я могу получить в своем приложении с использованием кеша файлов apc И кеша пользователя.

Итак, сначала я скомпилировал PHP 5.3 как DSO (модуль apache).

Потом установил APC через PECL через SSH. (Сначала я попробовал с установщиком модуля WHM, у него была такая же проблема, поэтому я попробовал через ssh)

Все выглядело нормально, и phpinfo показал, что apc загружен и включен.

Затем я проверил с помощью apc.php. Все было нормально

Но когда я начал тестировать свое приложение php, статистика в apc для состояния информации кэша файлов: Cached Files 0 (0.0 Bytes)
Просмотров 1
Промахов 0
Частота запросов (совпадения, промахи) 0,00 запросов кеша в секунду
Скорость обращения 0,00 запросов кеша в секунду
Скорость пропуска 0,00 запросов кэша в секунду
Скорость вставки 0,00 запросов кеша в секунду
Счетчик полного кеширования 0

Это означало, что файлы PHP не кэшировались, хотя я просмотрел более 10 файлов PHP с несколькими включениями. Итак, должно быть, были какие-то кешированные файлы.

Но кеш пользователя работает нормально.
Информация о кэше пользователя
Кэшированные переменные 0 (0,0 байта)
Просмотров 1000
Пропуски 1000
Частота запросов (совпадения, промахи) 0,84 запросов кеша в секунду
Скорость обращения 0,42 запросов кэш-памяти в секунду
Скорость пропуска 0,42 запросов кеша в секунду
Скорость вставки 0,84 запросов кеша в секунду
Счетчик полного кеширования 0

Фактически, это из тестового сценария кеширования APC, который пытается получить и сохранить 1000 записей и дает мне время. Этакий простой тест.

Кто-нибудь может мне здесь помочь.
Несмотря на то, что apc.cache_by_default = 1, файлы php не кэшируются.

Это моя конфигурация apc
Настройки времени выполнения
apc.cache_by_default 1
apc.canonicalize 1
apc.coredump_unmap 0
apc.enable_cli 0
apc.enabled 1
apc.file_md5 0
apc.file_update_protection 2
apc.filters
apc.gc_ttl 3600
apc.include_once_override 0
apc.lazy_classes 0
apc.lazy_functions 0
apc.max_file_size 1M
apc.mmap_file_mask
apc.num_files_hint 1000
apc.preload_path
apc.report_autofilter 0
apc.rfc1867 0 apc.rfc1867_freq 0
apc.rfc1867_name APC_UPLOAD_PROGRESS
apc.rfc1867_prefix upload_
apc.rfc1867_ttl 3600
apc.serializer по умолчанию
apc.shm_segments 1
apc.shm_size 32M
apc.slam_defense 1
apc.stat 1
apc.stat_ctime 0
apc.ttl 0
apc.use_request_time 1
apc.user_entries_hint 4096
apc.user_ttl 0
apc.write_lock 1

Также большинство файлов php имеют размер менее 20 КБ, поэтому apc.max_file_size = 1M не является причиной.

Я также безуспешно пытался использовать apc_compile_file, чтобы принудительно поместить некоторые файлы в кеш-код операции. Я также переустановил APC с включенной отладкой, но в error_log ничего не отображается

Я также попытался установить mmap_file_mask на / dev / zero и /tmp/apc.xxxxxx, я также установил разрешения / tmp на 777 безрезультатно

Любая подсказка кому-нибудь.

Обновление: я пробовал следующие вещи, и ни один из них не вызывает заполнение кеша файлов APC
1. установите apc.enable_cli = 1 И запустите скрипт из cli
2. Установите apc.max_file_size = 5M (на всякий случай)
3. переключил обработчик php с dso на FastCGI в WHM (затем переключил его обратно на dso, поскольку это не решило проблему)
4. Даже попробовал перезапустить контейнер

Похоже, проблема была в SourceGuardian.
Кеширование файлов теперь работает нормально после того, как вы закомментировали extension = "ixed.5.3.lin" из php.ini.

Это было обнаружено службой поддержки моего хостинг-провайдера, так что я положительно отношусь к такой отличной поддержке. Я бы не нашел проблему несколько дней.

Мысль должна опубликовать ответ на случай, если кто-то еще наткнется на эту проблему.