Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

01.08.2008, 14:44
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
Скрипт курса валют
Помогите со скиптом курса валют! Он работает, но бывает подглючивает и тормозит загрузку страницы. Не могу найти багу
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;
}
?>
Спасибо!
|
|
|

01.08.2008, 14:49
|
|
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме: 7452489
Репутация:
1359
|
|
лагать он может изза того што ты берешь данные с другого сайта. то есть сервер сначала ее скачивает а потом отдает тебе.
|
|
|

01.08.2008, 14:51
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
Это понятно, но может можно както оптимизнуть? Или есть у кого более стабильный скриптец? Спасибо!
|
|
|

01.08.2008, 14:57
|
|
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме: 7452489
Репутация:
1359
|
|
имхо ... я не пхп программист. но вроде тут и так всьо просто. штобы сервер не так тормозил могу предложить такую схему.
вынести это в отдельный скрипт. а на страницу подгружать аяксом. тогда он не будет тормозить остальную страницу.
|
|
|

01.08.2008, 15:02
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
Вот! Это уже лучше! Спасибо geezer.code, хороший совет!
|
|
|

01.08.2008, 15:05
|
|
Познавший АНТИЧАТ
Регистрация: 07.01.2007
Сообщений: 1,263
Провел на форуме: 3326855
Репутация:
702
|
|
Зачем аяксом? Просто кеш создай. А потом на кроне раз в час(например), обновляй этот кеш.
|
|
|

01.08.2008, 15:07
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
inlanger подскажи как это реализовать? 
|
|
|

01.08.2008, 15:15
|
|
Познавший АНТИЧАТ
Регистрация: 07.01.2007
Сообщений: 1,263
Провел на форуме: 3326855
Репутация:
702
|
|
То, что грабишь - не на страницу выдавай, а записывай в файл. И делай это в отдельном скрипте.
А на странице - читай с файла.
Таким образом, страница будет открываться моментом, так как она читает не с удалённого сервера, а из файла.
А скрипт №1... Можешь руками его обновлять, а можешь на крон поставить 
|
|
|

01.08.2008, 15:18
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
Сенкс inlanger! Идея тоже не плохая! Попробую так и сделать!
|
|
|

02.08.2008, 05:01
|
|
Постоянный
Регистрация: 13.10.2007
Сообщений: 347
Провел на форуме: 1345617
Репутация:
115
|
|
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";
?>
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|