Это похоже на простую вещь и должно быть частью базового кода для Yii, но я не могу найти решение в любом месте. Вот мой сценарий.Yii CacheDependency на основе значения кеша
1) Пользователь обновляет свою запись (используйте BeforeSave, чтобы установить значение кэша, меняется с каждым новым сохранить, PHP уникальных())
public function beforeSave()
{
Yii::app()->cache->set('userupdate'.$this->id,uniqid());
return parent::beforeSave();
}
2) Данные пользователя кэшируются с использованием значения кэша на первом этапе как зависимость от функции loadModel модели.
$model=Users::model()->cache(1800, $dependency)->findByPk($id);
3) Пользователь просматривает страницу, требующую для извлечения своих данных. Yii оценивает запрос, чтобы увидеть, изменилось ли кешированное значение с шага 1, если он не вытащил из кеша, если он вытащил из db.
При чтении этой страницы (http://www.yiiframework.com/doc/guide/1.1/en/caching.data) у нее есть эта функция, если дата файла изменяется, но не одна, для нее изменяется переменная. Любая помощь в этом вопросе была бы замечательной, поскольку я не могу понять, как это реализовать.
ПРИМЕЧАНИЕ. Мне нужно использовать кеш, чтобы удерживать переменную, поскольку я запускаю несколько экземпляров моего приложения, и они должны использоваться совместно для каждого сервера и всех пользователей (поэтому сеанс не будет работать).
Звучит просто в теории, но именно поэтому я в тупике. Я попытался захватить текущее значение кеша в value2 во время события afterFind, а затем оценить его, но это не работает. –
Я пошел так просто, как этот 'if ($ cache1 == $ cache2) { $ model = Пользователи :: model() -> cache (1800) -> findByPk ($ id); } else { $ model = Пользователи :: model() -> cache (0) -> findByPk ($ id); } ' –
Хорошо, нашел часть проблемы, я вызываю модельный поиск каждого запроса URL из-за расширенного UrlRule, поэтому работаю над тем, чтобы найти способ обойти это. –