Вот, дописал с запросом погоды раз в 2 часа с сервера, остальное время берется из кеша. Работать будет намного быстрее.
<?include ($_SERVER['DOCUMENT_ROOT'].'/1.html');?> (подключается шапка сайта) Погода: <table width="80%" cellpadding=3 cellspacing=1 border=0> <tr bgcolor=#779288> <?php $url = 'http://sait.ru/pogoda.html'; $beginBlock = '<tr bgcolor=#779288>'; $endBlock = '</tr></table>'; $cachefile = dirname(__FILE__).'/cache/weather.php'; // файл кеша $cache_time_config=7200; //время актуальности кеша 2 часа //Проверяем наличие кеша if(file_exists($cachefile)){ $cachetime = filemtime($cachefile); // время создание кеша if ((time() - $cachetime) < $cache_time_config) { //если кеш не устарел - берем значение из него $cache_used=true; include $cachefile; } } if(!$cache_used) // если не использовали кеш - заправшиваем страницу с сервера погоды { $pattern = '%' . $beginBlock . '(.*)' . $endBlock . '%isU'; $fp = @fopen($url, 'r'); if (!$fp) exit(); $data = ''; while(!feof($fp)) { $data .= fgets($fp, 8192); } fclose($fp); if (!preg_match($pattern, $data, $matches)) // страница не доступна { if(file_exists($cachefile)){ // берем из устаревшего кеша данные include $cachefile; } else // кеш отсутствует { echo 'Сервер погоды временно недоступен'; } } else // сохраняем в кеш новое значение { file_put_contents($cachefile,'<?php $matches='.var_export($matches,1).'; ?>'); } } echo isset($matches[1]) ? $matches[1] : ''; ?> </tr></table> <?include ($_SERVER['DOCUMENT_ROOT'].'/2.html');?> (подключается подвал сайта)
Хм, так не бывает. Если файла нет, то кеша не буде. Может Вы что то попутали или посмотрели в папку, когда кеша не было :) Довольно странная ситуация
'b14_3268733_1 ' - после "1" пробел лишний. Нужно ввести имя базы без пробелов в конце и начале
А если заменить это
if (!preg_match($pattern, $data, $matches)) { exit('dfgd'); }
на это
if (!preg_match($pattern, $data, $matches)) { if(file_exists(dirname(__FILE__).'/cache/weather.php')){ include dirname(__FILE__).'/cache/weather.php'; } else { echo 'Сервер погоды временно недоступен'; } } else { file_put_contents(dirname(__FILE__).'/cache/weather.php','<?php $matches='.var_export($matches,1).'; ?>'); }
и создать в директории со скриптом поддиректорию cache с правами 777, то погода будет кешироваться, и при недоступности сайта погоды, она будет выводиться из кеша.
Кеш так же можно использовать для ускорения работы скрипта, тоесть грузить удаленную страницу не для каждого посетителя, а, например, раз в 15 минут. Все остальные зарпосы же брать из локального кеша.