Использование одного и того же MySQL-запроса со всеми пользователями без необходимости повторного подключения к базе данных.
Я постараюсь быть простым, так что мне нужно выполнить запрос MySQL (выбрать записи из таблицы), скажем, я буду создавать запрос с заданиями cron или что-то еще каждые 5 минут, и сохранить этот запрос или результаты в файл или глобальная переменная, если это возможно, и затем ее передача всем клиентам (т. е. использование одного и того же запроса для всех пользователей без необходимости повторного подключения к этой базе данных). Теперь я знаю, что некоторые из вас скажут мне использовать кэш, но я искал это, и если таблица изменится, будет новый кеш, и моя таблица постоянно меняется, теперь мне все равно, изменилась ли таблица, я просто хочу обслуживать один и тот же запрос всем клиентам. Это возможно? Ваши рекомендации, пожалуйста. Благодарю.
Срок действия кэша автоматически истекает при изменении таблицы (вставки, обновления, удаления и т. Д.). И моя таблица постоянно меняется, поэтому можно ли сохранить кеш, даже если таблица была изменена? или я должен искать другое решение?
2 ответа
Если набор результатов не слишком велик, вы можете кэшировать его в сгенерированный скрипт следующим образом:
file_put_contents(
'mycache.php',
'<?php return ' . var_export($results, true) . ' ?>'
);
Тогда использовать это:
$results = include 'mycache.php';
Если вы всегда используете один и тот же способ (функция, класс) для чтения и записи в базу данных,
вы всегда можете поставить срок действия кэша после каждого действия
например:
function add() // update, delete
{
if (added) $this->expire_cache();
}
function search()
{
if (results) $this->set_cache(results);
}
function expire_cache()
{
// do expire or purge cache
}
function set_cache( $db_results )
{
// saving the database result OR computed result into cache
// memcache, redis, disk cache or anything
}
Тем не менее, цель кеширования состоит в том, чтобы обслуживать запрос без необходимости получать дорогостоящий ресурс, такой как запрос к базе данных,
но если вам нужно обновлять очень часто, то реализация кеша не так полезна
Пример memcache: http://php.net/manual/en/book.memcache.php
вам нужно будет скомпилировать модуль memcache, настроить и запустить сервер memcache, чтобы использовать memcache