2012-02-20 6 views
0

У меня есть простой сайт в общедоступном хостинговом сервисе, и я использую базовое кэширование вывода PHP (запись HTML-файлов в файлы). Данные сайта не часто меняются, но когда это происходит, я только делаю изменения, поэтому у сайта нет интерфейса обновления, потому что он не нужен, я просто вхожу в интерфейс phpmyadmin и загружаю изменения в качестве операторов SQL ,Есть ли способ вызвать немедленное аннулирование кеша файловой системы PHP, если данные MYSQL меняются?

Это хорошо работает, единственная проблема заключается в том, что изменения не отображаются сразу на сайте, только когда истекает время кеша. Есть ли способ вызвать недействительность кэша из mysql, поэтому кеши очищаются при изменении данных в базе данных. Например, я мог бы добавить еще одну строку sql для обновления, которая могла бы вызвать внешнюю программу в домашнем каталоге, если это возможно, но так ли?

Если это не так, то есть какой-то умный способ для MYSQL уведомить сторону PHP об обновлении данных без необходимости подключения PHP к базе данных (если есть кешированная версия страницы, то она использует это и не подключается к базе данных, потому что это точка).

+0

У вас есть доступ к cron (или другим средствам настройки повторяющихся задач) в вашем сервисе хостинга? – Furgas

+0

Да, cron доступен, но допустимый минимальный интервал повторения составляет 30 минут, поэтому он не очень полезен для недействительности кеша. Конечно, я мог бы попытаться запустить 30 cron-заданий с разными начальными временами, чтобы достичь 1-минутной гранулярности, но это неуклюжие решения. – Tom

+0

Вы можете реализовать свой собственный упрощенный cron (то есть php-скрипт, который будет регулярно проверять наличие обновлений для обновлений), и запускать его один раз. – penartur

ответ

1

есть какой-то хитрый способ для MYSQL уведомить PHP сторону о обновлении данных без PHP того, чтобы подключиться к базе данных

Существует нет, и вы не должны хотеть этого.

Вы можете написать специальный скрипт PHP на своем сайте, который приведет к аннулированию кеша и вызовет его вручную каждый раз при обновлении базы данных. Или вы можете хранить кеш в БД (а не в файлах).

+0

Да, но это дополнительный ручной шаг. Я могу это сделать, но сначала задал вопрос, есть ли лучший способ. Хранение кеша в виде БД поражает точку, потому что я кэширую, чтобы избежать ненужных вызовов БД. – Tom

+0

В взаимодействии db-to-php db является сервером, а db является клиентом. Связь между сервером и клиентом должна быть установлена ​​клиентом. Кроме того, обычно на базе хостинга БД-служба работает на сервере, отличном от того, на котором работают ваши скрипты PHP, и нет соответствующего пользователя (и, как следствие, вашего «домашнего каталога») на сервере БД по соображениям безопасности , – penartur

+0

Уверен, у вас есть раздел в вашем php-коде. если Cache имеет значение null, тогда создайте свой объект Cache. вы можете расширить с дополнительным параметром, если ResetCache является истинным, а затем отбросить мой текущий объект кеша и создать новый объект Cache .. но это быстро и грязно ... дополнительный шаг в защищенной области вашего веб-приложения - лучший способ , – glenn