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

Включить кэш пользователя APC только на определенных сайтах (Apache)

Во-первых, нас пока совсем не интересует файловый кеш, важен его пользовательский кеш.

Нам необходимо хранить информацию о структурах базы данных и результатах запросов в кэше для некоторых разрабатываемых нами приложений.

На нашем сервере есть десятки сайтов, некоторые из которых контролируются клиентами с доступом по ftp.

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

У нас есть mod_php на сервере CentOS 5.3 с plesk. У нас есть apc.cache_by_default=0 и apc.filters="-/.*" поскольку его включение, похоже, нарушает работу многих сторонних приложений, которые мы установили.

я пробовал php_admin_flag apc.enabled off и php_admin_value apc.enabled 0 в хосте, но вроде не действует.

Есть ли способ полностью отключить apc только для некоторых сайтов?

В качестве альтернативы, есть ли способ иметь отдельный пользовательский кеш для каждого виртуального хоста? Или другое решение для кеширования? Мы рассматриваем memcached, но я боюсь, что у него будут аналогичные проблемы.

Спасибо.

При таком использовании требуется кэш памяти. Получите memcache, прочтите документацию на http://memcached.org.

Проблема с APC и mod_php в том, что mod_php находится внутри того же процесса, что и apache. Это означает, что у вас будет только одна конфигурация PHP для всех ваших хостов.

Попробуйте изучить интерфейс FastCGI PHP. К сожалению, у меня нет большого опыта настройки этого на apache (мы используем nginx), но мы использовали это для большого эффекта для разделения конфигураций для разных сайтов на общем сервере хостинга. Раздельные конфигурации означают разделение всего: вы можете включить разные модули PHP для разных сайтов, иметь разные хранилища сеансов для разных сайтов, иметь разные лимиты загрузки для разных сайтов и т. Д. И т. Д. В основном это сводится к наличию отдельного сервера PHP-FCGI для (по крайней мере) каждого клиента. Каждый сервер FCGI имеет собственную конфигурацию; мы используем /srv/$domain/fcgi/php.ini, но все, что работает для вас и Plesk.

CGI также может работать; Я не на 100% знаю, как APC кеширует. Если он находится в памяти, то CGI не поможет, поскольку он создает новый процесс для каждого запроса, что означает, что любой кеш в памяти будет теряться при каждом запросе. Чтобы было ясно, это не рекомендуется, даже если оно действительно работает, но его проще настроить для тестирования.

Как сказано на этом Блог системного администратора Linux:

включить APC для конкретного конфигурация vhost или используя .htaccess с помощью:

php_flag apc.cache_by_default On