Помогите прикрутить кеш к парсеру погоды

Тема в разделе "PHP", создана пользователем AlexeyL, 29 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. AlexeyL

    AlexeyL Писатель

    Регистр.:
    18 авг 2009
    Сообщения:
    21
    Симпатии:
    1
    Помогите прикрутить кеш к парсеру погоды...
    Парсер сделан под дле...
    PHP:
    <?php
    $text 
    file_get_contents'http://сайт' );
    preg_match'/<td class="n1td v10ccc">(.*?)<\/td>/is' $text $date_tomsk );

    echo 
    $date_tomsk[1];

    preg_match'/<span class="v28fc0b">(.*?)<\/span>/is' $text $temperature );

    echo 
    " | Температура<font color=red><b> ";
    echo 
    $temperature[1];
    echo 
    "</b></font>";

    preg_match'/<tr><td class="ntd7"><span class="v10cccb">(.*?)<\/tr>/is' $text $davlenie );

    echo 
    "°c | ";
    echo 
    $davlenie[1];



    ?> 
    Вот скрипт который парсит все что нужно, как бы прикрутить к нему кеш?
    Можно отдельный или от самой ДЛЕ

    А то я только начал изучать php и нигде не моуг понять как прикрутить нормально кеш..
     
  2. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    например так, с кэшем во временной директории и настраиваемым временем обновления

    PHP:
    $l_time 2*60*60// период обновления 2 часа
    $tmp_file rtrim(sys_get_temp_dir(),"/\\").'/weather_cache.txt'// tmp файл

    if(is_file($tmp_file) AND filemtime($tmp_file) > (time()-$l_time) )
    $w_page file_get_contents($tmp_file);
    else {
    ob_start(); // буферизация

    $text file_get_contents'http://site.com/' );
    preg_match'/<td class="n1td v10ccc">(.*?)<\/td>/is' $text $date_tomsk );
    echo 
    $date_tomsk[1];
    preg_match'/<span class="v28fc0b">(.*?)<\/span>/is' $text $temperature );
    echo 
    " | Температура<font color=red><b> ";
    echo 
    $temperature[1];
    echo 
    "</b></font>";
    preg_match'/<tr><td class="ntd7"><span class="v10cccb">(.*?)<\/tr>/is' $text $davlenie );
    echo 
    "°c | ";
    echo 
    $davlenie[1];

    $w_page=ob_get_contents(); ob_end_clean();
    file_put_contents($tmp_file,$w_page);    
    }

    echo 
    $w_page// вывод
     
    AlexeyL нравится это.
  3. AlexeyL

    AlexeyL Писатель

    Регистр.:
    18 авг 2009
    Сообщения:
    21
    Симпатии:
    1
    спасибо, а вот вопрос, файл будет сохраняться в туже папку где и файл?
     
  4. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37
    нет
    sys_get_temp_dir - возвращает путь к временной папке системы
     
  5. AlexeyL

    AlexeyL Писатель

    Регистр.:
    18 авг 2009
    Сообщения:
    21
    Симпатии:
    1
    а можно это сделать чтобы это было в той папке, в которой я захочу?
     
  6. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    да, можно использовать относительный или абсолютный путь, только в таком случае желательно выставить на файл права 777

    PHP:
    $tmp_file 'weather_cache.txt';
    // или
    $tmp_file '/home/user_name/public_html/site.com/weather_cache.txt';
     
    AlexeyL нравится это.
Статус темы:
Закрыта.