Помогите со скиптом курса валют! Он работает, но бывает подглючивает и тормозит загрузку страницы. Не могу найти багу PHP: <?php $content = get_content(); $pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"; preg_match_all($pattern, $content, $out, PREG_SET_ORDER); $dollar = ""; $euro = ""; foreach($out as $cur){ if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]); if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]); } echo'<table cellpadding="0" cellspacing="0"> <tr> <td width="50%">Доллар: </td> <td><B>'.$dollar.'</B> руб.</td> </tr> <tr> <td width="50%">Евро: </td> <td><B>'.$euro.'</B> руб.</td> </tr></table>'; function get_content(){ $date = date("d/m/Y"); $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; $fd = @fopen($link, "r"); $text=""; if(!$fd) echo "Запрашиваемая страница не найдена"; else{ while(!feof ($fd)) $text .= fgets($fd, 4096); } fclose ($fd); return $text; } ?> Спасибо!
лагать он может изза того што ты берешь данные с другого сайта. то есть сервер сначала ее скачивает а потом отдает тебе.
имхо ... я не пхп программист. но вроде тут и так всьо просто. штобы сервер не так тормозил могу предложить такую схему. вынести это в отдельный скрипт. а на страницу подгружать аяксом. тогда он не будет тормозить остальную страницу.
То, что грабишь - не на страницу выдавай, а записывай в файл. И делай это в отдельном скрипте. А на странице - читай с файла. Таким образом, страница будет открываться моментом, так как она читает не с удалённого сервера, а из файла. А скрипт №1... Можешь руками его обновлять, а можешь на крон поставить
PHP: <? $host = "wap.rbc.ru"; $path = "/valuta_new/index.wml"; $fp = fsockopen($host,80,$errno,$errstr,30); if(!$fp) echo"$errstr ($errno)<br />\n"; else{ $headers = "GET $path HTTP/1.0\r\n"; $headers .= "Host: $host\r\n"; $headers .= "Accept: *\r\n"; $headers .="Accept-Charset: UTF-8\r\n"; // <<==== $headers .= "Accept-Charset: *\r\n"; $headers .= "Accept-Encoding: deflate\r\n"; $headers .= "Accept-Language: ru\r\n"; $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01\r\n\r\n"; fwrite($fp,$headers); while($text != "\r\n") $text = fgets($fp,128); $text = ""; while(!feof($fp)) $text .= fgets($fp,4096); fclose($fp); } $text=strstr($text,'<br/>'); $end=strstr($text,'<a href="http://wap.rbc.ru/valuta_new/cis.wml'); $text=str_replace($end, '', $text); $replace1=array ( '<a href="http://wap.rbc.ru/valuta_new/dEUR.wml">EUR</a>', '<a href="http://wap.rbc.ru/valuta_new/dGBP.wml">GBP</a>', '<a href="http://wap.rbc.ru/valuta_new/dUSD.wml">USD</a>'); $replace2=array ( 'EUR', 'GBP', 'USD'); $text=str_replace($replace1, $replace2, $text); $data=date("d.m.Y"); echo "$data"; echo "$text"; ?>