Best-club - портал хорошего настроения!
→◊ Библиотека ◊←
Меню сайта
  • Драмы
  • Ужасы
  • Фэнтези
  • Боевики
  • Мистика
  • Комедии
  • Триллеры
  • Мелодрамы
  • Фантастика
  • Мультфильмы
  • Приключения
  • Связь с админом
  • Список пользователей
  • Полная статистика сайта
  • ТОП наград
  • Переводчик
  • Конвертер величин
  • Проверка правописания
  • Раздача ICQ
  • Оставить отзыв о сайте
  • Раскрутка сайтов

  • Поиск по сайту
    Введите ключевое слово
    для поиска



    Статистика сайта




    ProfiSmart TOP webgari.com Рейтинг сайтов

    Каталог сайтов

    bodr_top
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Зарегистрировано:
    Всего: 1117
    Парней: 1070
    Девушек: 47
    Последний: molodoo

    Облако тегов
    Важная информация
    Главная » Статьи » Wap/Web Мастеру » PHP, Perl, ASP

    PHP - простое кеширование
    В данной статье рассматривается один из самых простых способов кэширования подкачиваемых файлов, SQL запросов и других
    медленно создаваемых частей ваших страниц. Язык программирования: PHP

    Что должно быть на главной странице ?? Правильно, там должно быть понемножку от каждого раздела сайта. И конечно Ваша
    страница строится автоматически, исходя из содержимого форумов, новостных лент и других разделов сайта. 

    Сколько SQL запросов выполняется при загрузке главной страницы ?? Сколько блоков подкачивается с других сайтов ?? 

    Сейчас мы рассмотрим простой и эффективный способ кэширования данных такого рода. 

    В качестве примера рассмотрим случай импорта новостей с внешнего сервера: http://news.novgorod.ru/ultramode.txt 

    Наша задача получить этот файл, обработать его и вывести его пользователю. Программа делающая это, выглядит следующим
    образом: 
    $d=@file("http://news.novgorod.ru/ultramode.txt");
    for ($i=0;$i<11;$i++) {
    $msg=$d[2+$i*8];
    $url=$d[3+$i*8];
    $date=$d[4+$i*8];
    print "";
    print trim($msg)."
    (".$date.")";
    }
    ?>

    При каждой загрузке нашей страницы происходит обращение к внешнему серверу news.novgorod.ru, оттуда по протоколу HTTP скачивается
    файл ultramode.txt. А теперь представим ситуацию, что сервер находится на другом конце планеты и соединение, а тем более передача
    файла занимает достаточно больше время. Или более того, сервер может быть временно недоступен. 

    Вывод. Зачем каждый раз подгружать файл ultamode.txt, если новости обновляются не чаще одного раза в два-три часа?? Правильно.
    Надо кэшировать. 

    А делать мы это будем очень просто. Как вы могли заметить, в первой строке файла хранится комментарий. Комментарий нам не
    нужен и на его месте можно замечательно разместить дату последнего обновления файла. 

    Алгоритм работы следующий:
    Считываем кэшированную версию 
    Если кэшированная версия устарела, то на ее место считываем файл http://news.novgorod.ru/ultramode.txt, заменяем первую строку на текущее
    время и сохраняем в кэш. 
    Оформляем и выводим данные пользователю. 

    Ниже приведен код проделывающий все это: 
    <?php
    // считываем файл из кэша
    $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.")";
      }

    Вот и все. Таким же образом можно кэшировать и SQL запросы. Используя этот механизм мне удалось уменьшить время создания
    главной страницы с 1.5 сек до 0.05 сек

    Категория: PHP, Perl, ASP | Добавил: Admin | Дата: 29.08.2009 | Просмотры: 1552 | Рейтинг:
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Вход на сайт
    Гость, добро пожаловать на best-club! Тапки в углу, пиво в холодильнике. Располагайся:) Для получения большего комфорта войди как пользователь или зарегистрируйся.



    Обмен музыкой [?]
    Открыть в новом окне

    Партнёры





    Опрос

    Какой номер icq вы хотели бы больше всего?
    Всего ответов: 15

     
    Best-club team © 2008 - 2024

    SiteMap Партнёры и друзья Поддержать проект
    Третий Мир: Война Королей - Форум
    Администрация сайта не несёт ответственности за материалы опубликованные на сайте! Все материалы исключительно для ознакомления!
    Мини профиль