Крот
Новичок
Замена кэширования в Smarty
Привет.
Меня слегка не устраивает кэширование в Smarty, а именно тем, что если кэш перезаписывается и в этот момент одновременно коннектится куча юзеров, то серваку сильно плохеет (не будем вдоваться в подробности почему и т.д., просто есть задача и всё).
Я хочу реализовать это примерно следующим образом...
Итак, есть 3 ситуации...
Закэшированный файл существует (даже не будем рассматривать эту ситуацию)
Закэшированного файла не существует
В настоящее время кэш обновляется
Закэшированного файла не существует.
Первый пользователь, который зашел на скрипт инициировал создание кэша. Создаётся временный файл, который указывает другим пользователям на то, что в настоящее время генерируется кэш. Как только кэш сгенерирован временный файл удаляется и создаётся файл кэша. В то время, пока происходит генерация - другие пользователи как бы ждут (как лучше организовать??).
В настоящее время кэш обновляется. Пользователь, который инициировал обновление кэша создаёт временный файл, который указывает другим пользователям на то, что в настоящее время кэш обновляется, берите старую версию кэша. Когда кэш обновился - удаляется временный файл и старый файл перезаписывается.
Насколько это рабочий алгоритм?
Спасибо.
Привет.
Меня слегка не устраивает кэширование в Smarty, а именно тем, что если кэш перезаписывается и в этот момент одновременно коннектится куча юзеров, то серваку сильно плохеет (не будем вдоваться в подробности почему и т.д., просто есть задача и всё).
Я хочу реализовать это примерно следующим образом...
Итак, есть 3 ситуации...
Закэшированный файл существует (даже не будем рассматривать эту ситуацию)
Закэшированного файла не существует
В настоящее время кэш обновляется
Закэшированного файла не существует.
Первый пользователь, который зашел на скрипт инициировал создание кэша. Создаётся временный файл, который указывает другим пользователям на то, что в настоящее время генерируется кэш. Как только кэш сгенерирован временный файл удаляется и создаётся файл кэша. В то время, пока происходит генерация - другие пользователи как бы ждут (как лучше организовать??).
В настоящее время кэш обновляется. Пользователь, который инициировал обновление кэша создаёт временный файл, который указывает другим пользователям на то, что в настоящее время кэш обновляется, берите старую версию кэша. Когда кэш обновился - удаляется временный файл и старый файл перезаписывается.
Насколько это рабочий алгоритм?
Спасибо.
Да и серверу будет еще хуже ибо проверки файлов и все такое увеличиваются в разы.