Как эффективно кэшировать MySQL запрос в php для этой таблицы - PullRequest
2 голосов
/ 22 сентября 2011

У меня есть таблица Posts, содержащая поля title, contents, rating, no_of_comments, author_id. Когда пользователь понижает рейтинг поста, поле рейтинга уменьшается и наоборот.

Также я кеширую запрос на отображение, который показывает последние сообщения и относится к таблице Authors. Проблема в том, что поле рейтингов нужно часто обновлять, т. Е. Есть много положительных и отрицательных голосов. Поэтому мне нужно перестраивать кеш каждый раз, когда пользователь поднимает / опускает сообщение. Я считаю, что это пустая трата, потому что обновляется только одно поле во всех кэшированных данных. Поэтому я хочу знать, есть ли решение этой проблемы. Кстати, я использую файловое кэширование.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2011

Если вы нормализуете свою структуру данных, вы сможете кэшировать статическую часть - например, «Post», иметь «Post Attributes» или все, что вы решите использовать, будучи динамическим.комментарии должны быть получены путем подсчета количества комментариев в таблице «Комментарии».

Надежная структура данных поможет вам здесь.

0 голосов
/ 22 сентября 2011

Хорошо.Таким образом, ваше решение состоит в том, чтобы открыть ajax-запрос к PHP, который выполняет следующее:

UNTESTED

while (array_pop(mysql_fetch_array(mysql_query("SELECT count(*) FROM `posts` WHERE `ID` = '$latest_id_prediction'"))) == 0) { 
    sleep(10);
}
echo array_pop(mysql_fetch_array(mysql_query("SELECT * FROM `posts` WHERE `ID` = '$latest_id_prediction'");

Это будет проверять каждые 10 секунд, если есть новыйсообщение, если есть, оно будет отображать информацию о сообщении.вы делаете запрос ajax на эту страницу без таймаута и обновляете страницу, когда получаете ответ.Получив ответ, откройте новое соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...