Мы используем APC в качестве кэша кода операции. Есть ли способ заставить APC кешировать несуществование файла? Мы установили apc.stat = 0
и apc.include_once_override = 1
. Есть ли что-то еще, чтобы улучшить производительность вызова include_once
для файла, который может отсутствовать в файловой системе? Если он присутствует, очевидно, мы хотим включить его. Однако, если он отсутствует, он будет никогда , и мы не хотим, чтобы PHP вызывал open()
для файла при каждом запросе для проверки.
Для справки: у нас есть один базовый сайт, но мы предоставляем настройки для сайта на индивидуальной основе. У некоторых клиентов есть пользовательская страница входа, у других - совершенно уникальные страницы и т. Д.
Мы используем Zend Framework немного необычным образом, чтобы позволить нам при необходимости переопределять контроллеры. Наш сайт может иметь контроллер с именем LoginController
, определенный в файле controllers/LoginController.php
. Однако у нашего клиента «Компания» может быть требование для пользовательской страницы входа в систему, поэтому мы напишем новый класс с именем Company_LoginController
, определенный в каталоге controllers/company/LoginController.php
. (Это соглашение об именах позволяет нам соответствовать понятию «модулей» Zend Framework.)
Когда мы имеем дело с классом, мы в основном делаем что-то вроде этого:
include_once APPLICATION_PATH . '/controllers/company/LoginController.php';
if (class_exists("Company_LoginController")) {
echo 'customer-specific controller exists';
} else {
include_once APPLICATION_PATH . '/controllers/LoginController.php';
echo 'customer-specific controller does not exist; using default';
}
Если файл /controllers/company/LoginController.php
существует, APC будет кэшировать его при первом запросе и никогда больше не извлекать его из файловой системы. Однако, если файл /controllers/company/LoginController.php
действительно не существует, я не хочу, чтобы APC проверял наличие этого файла более одного раза. Есть ли способ сделать это?