Използвам cakephp за стартиране на приложение с множество клиенти. Има само 1 екземпляр на приложението, като единствената разлика е базата данни, към която се свързва всяко приложение. Освен това приложението е идентично.
Моята настройка:
- Apache 2.2
- Php 5.3
- торта 1.3.10
Win 2k3 сървър
Имам приложението, разгърнато под docroot на apache (само 1 екземпляр на приложението работи). Наскоро преминах от File към APC кеш. Файловите префикси за кеширане са еднакви и за двете приложения. Използване на виртуални хостове на Apache, за да решите към кое приложение да отидете. Кеширам статични html/js/css/gif, но не и php (чрез mod_expires на apache)
Проблем:
Забелязах, че някои от кешираните стойности, които трябваше да бъдат достъпни за APP 1, се показват в падащото меню за App 2. Бях шокиран да видя това да се случи.
Как мога да добавя изолация в APC кеш слоя между приложенията?
АКТУАЛИЗАЦИЯ: Проблемът възниква дори ако направя ново копие на приложението и го поставя в собствения му docroot!!!
АКТУАЛИЗАЦИЯ 2
Сценарий 1) 1 екземпляр, който има всички къдрене/сресване
Ако имам php код като
if(client=="client1") {
$options = array(opt1,opt2);
}else if(client=="client2") {
$options = array(opt3,opt4);
}
и този код се споделя както от клиент 1, така и от клиент 2, как APC кеширането ще повлияе на това?
Сценарий 2) 2 екземпляра, всеки персонализиран за клиент
client1.php
$options = array(opt1,opt2);
client2.php
$options = array(opt3,opt4);
как това се отразява на APC кеша? Ако разбирам правилно, за Сценарий 1 е възможно данните от клиент1 да се смесват с клиент 2 (много лошо). За Сценарий 2, стига да използвам различни ключове за кеширане, сигурен ли съм, че никога няма да има объркване?