Xwab
Форумыnavigate_nextПрограммирование на PHP

Кеширование
Сообщения
НЕЗНАЙКА

Подскажите (разъясните) насчет этого.
Допустим есть база на десятки и больше тысяч записей. Генерация, мягко говоря, не радует. Хотелось бы закешировать результаты вывода.
Но.. Как это реализовать? Знаю что нужно записывать результат в файл и далее читать его. Смущают некоторые моменты, например, количество элементов на страницу мб разное, возможна сортировка...
П.С. В тоже время желательно обойтись без объемного кода

20 Июл 2010, 1:14
LinX

<?
// считываем файл из кэша
$d=@file("/tmp/news.cache");
$fs=trim($d[1]);
// Если файл не обновлялся 3600 секунд (1 час) или файл пуст,
// то обновляем его
if (intval($d[0])<time()-600 || empty($fs)) {
$d=@file("http://news.novgorod.ru/ultramode.txt");
$fs=trim($d[1]);
// Сохраняем новую версю в кэше
if (!empty($fs)) {
$fw=fopen("/tmp/news.cache","wt");
flock($fw, LOCK_EX);
// В первую строку запишем текущее время
fputs($fw,time()."\n");
// Сохраним остальные строки
for ($i=1;$i<count($d);$i++) fputs($fw,trim($d[$i])."\n");
fclose($fw);
}
// Если, почему-то, файл не был скачан,
// то воспользуемся кэшированной версией
else $d=@file("/tmp/news.cache");
}

// Вывод данных
for ($i=0;$i<11;$i++) {
$msg=$d[2+$i*8];
$url=$d[3+$i*8];
$date=$d[4+$i*8];
print "<a href='http://news.novgorod.ru".trim($url)."'>";
print trim($msg)."</a> (".$date.")";
}
?>

Простой метод кеширования... Сам в инете вчера искал Много полезного есть по данному поводу

20 Июл 2010, 3:33
LinX

Вот также полезно: http://spectator.ru/technology/php/caching(веб)

20 Июл 2010, 3:35
НЕЗНАЙКА

Видел это все. Не мешало бы на время статьи посмотреть

20 Июл 2010, 4:59
suhonok

АртAS, это как бы деревянный способ, есть спец модули и даже сервера кеширования

20 Июл 2010, 5:35
НЕЗНАЙКА

Все же, как быть с динамикой, когда резульству много от чего зависит?

20 Июл 2010, 6:21
Reflesh

Тока использовать кэш там где не нужно, не использовать кэш там где нужно работать с результатами к примеру сортировать,искать или как то работать с результатом

20 Июл 2010, 6:33
НЕЗНАЙКА

Мдо.. У меня пока одно решение - для каждой сортировки, разного количества создавать файлы
Подождем знающих)

20 Июл 2010, 7:07
suhonok

НЕЗНАЙКА, если хочеш вытащить все записи и в кеш, то вывод этих данных будет такая же, может надо искать узкие места в других дебрях?

20 Июл 2010, 7:58
НЕЗНАЙКА

Возможно. Ключи для таблицы установлены - уже плюс)
Select - Запрос стандартный, обычная выборка
Так что, хз, это еще без подсчета (для категорий)

20 Июл 2010, 8:55
Ответить на тему