Резюме: У меня установлен PHP (5.3.8) в качестве модуля Apache и установлен APC через PECL. Пользовательский кеш работает нормально, но файловый кеш не работает (у меня apc.cache_by_default установлено в 1, так что это не проблема)
Деталь:
Я только что получил VPS (с cPanel / WHM), чтобы проверить, какую выгоду я могу получить в своем приложении, используя кэш-файл apc И пользовательский кеш.
Итак, я получил PHP 5.3, скомпилированный как DSO (модуль apache).
Затем установил APC через PECL через SSH. (Сначала я попробовал установить WHM Module, у него тоже была такая же проблема, поэтому я попробовал через ssh)
Все выглядело нормально, и phpinfo показал, что apc загружен и включен.
Тогда я проверил с apc.php. Все казалось в порядке
Но когда я начал тестировать свое php-приложение, статистика в apc для состояния File Cache Information:
Cached Files 0 ( 0.0 Bytes)
Hits 1
Misses 0
Request Rate (hits, misses) 0.00 cache requests/second
Hit Rate 0.00 cache requests/second
Miss Rate 0.00 cache requests/second
Insert Rate 0.00 cache requests/second
Cache full count 0
Это означало, что PHP-файлы не кэшировались, хотя я просмотрел более 10 PHP-файлов с несколькими включениями. Так что, должно быть, было несколько кэшированных файлов.
Но пользовательский кеш работает нормально.
User Cache Information
Cached Variables 0 ( 0.0 Bytes)
Hits 1000
Misses 1000
Request Rate (hits, misses) 0.84 cache requests/second
Hit Rate 0.42 cache requests/second
Miss Rate 0.42 cache requests/second
Insert Rate 0.84 cache requests/second
Cache full count 0
Приведенный выше вывод пользовательского кэша взят из сценария тестирования кэширования APC, который пытается получить и сохранить 1000 записей и выдает мне время. Этакий простой тест.
Может ли кто-нибудь помочь мне здесь.
Несмотря на то, что apc.cache_by_default = 1, php-файлы не кэшируются.
Это мой apc config
Runtime Settings
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 default
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 безрезультатно
- set apc.enable_cli = 1 И запустить скрипт из cli
- Установить apc.max_file_size = 5M (на всякий случай)
- переключил обработчик php из dso в FastCGI в WHM (затем переключил его обратно в dso, поскольку это не решило проблему)
- Даже попытался перезапустить контейнер
Любая подсказка.
Примечание: Я разместил вопрос на serverfault.com, но не получил много просмотров или ответа, поэтому я публикую здесь (поскольку stackoverflow кажется более активным, и у меня есть только 1 месяц чтобы проверить мой VPS и посмотреть, будет ли он полезен для общего доступа)