Войти или зарегистрироваться




PHP скрипт курса валют

 

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

Выбор среди сервисов, которые позволяют автоматизировать процесс, достаточно большой, но зачастую эти виджеты необходимо качественно вписать в дизайн нового сайта, а это не всегда возможно. Поэтому к выбору сервиса будем относиться с большим вниманием. Конечно, курс и стоимость монеты Екатерины Первой мы таким образом не получим, но вот запросто можно динамически переводить стоимость на монету в рублях на гривны, доллары или евро. Удобно.  

Информацию о курсах будем брать с сайта rbc.ru, который благородно предоставляет сервис экспорта. Для начала создадим простейший информер котировок валют.

Итак полных исходник на php:

<?php
 if (time()-1800>filemtime("usd.txt")) {
 $f=fopen('usd.txt','w');
 ob_start();
include('http://80.68.240.81/free/cb.0/free.fcgi?period=DAILY
&tickers=USD&separator=%2F&data_format=BROWSER');
$b = ob_get_contents(); ob_end_clean();
fwrite($f,'<img src="
http://vladwebstudio.ru/img/dollar.gif"
align="middle">   
'.ereg_replace('[^\.0-9]','0',substr($b,18,7)).'<br />');

include('usd.txt');
?>

Информацию о котировках валют будем выгружать с ресурса export.rbc.ru, именно он позволяет разработчикам получать актуальную информацию относительно курса валют. Так как обработка данных будет происходить на стороне сервера, то указав IP адрес съекономим лишнее обращение к DNS серверу. Специально для того, что бы вам не пришлось в ближайшее время оптимизировать работу скрипта, рассмотрим самый экономичный с точки зрения нагрузки вариант:

<?php
if (time()-1800>filemtime("usd.txt")) {
//выгрузка информации с сервера и запись в файл usd.txt
}
include('usd.txt');
 ?>

Условием time()-1800>filemtime("usd.txt") мы обеспечиваем выполнение php скрипта каждые полчаса (1800 секунд). Если текущее время больше времени последнего редактирования файла "usd.txt" более чем на полчаса, то заново выполянем операцию подключения к серверу и запись в файл. В итоге просто делаем инклуд файл.

Рассмотрим еще одну конструкцию:

ob_start();
include('http://80.68.240.81/free/cb.0/free.fcgi?period=DAILY&tickers=USD&separator=%2F&data_format=BROWSER');
$b = ob_get_contents(); ob_end_clean();

Здесь мы кэшиурем инклуд. Дело в том, не все хостинги позволяют рабоать с URL адрессами с помошью функций fopen fgets и.т.д. Осталось записать все что мы наделали в файл и читать его тогда, когда нам будет необходимо. Конечно же, можно обойтись и без файла, но в таком случае при каждой загрузке страницы с курсами, скрипт будет работать, а это лишняя нагрузка на сервер (что иногда критично!). А зачем нам лишняя нагрузка на сайте, где размещён простой словарь нумизмата и нет функционала биржи - не покупать же для него отдельный VPS сервер?

Кстати, позволю себе небольшую подсказку: если ваш создаваемый сервис позволяет отслеживать изменение курса валют, вместо файлов лучше использовать базу данных MySQL и записывать курс валюты относительно необходимой несколько раз в сутки. Отличная идея для сайта про Forex или любые другие биржи, да и вообще любой сайт, который хоть как-то связан с деньгами, должен среди функционала иметь подобный виджет.

Успехов! 

След. »


Самое популярное


Последние новости


Разделы форума

Все разделы форума

При перепечатке материалов ссылка на источник обязательна.

© Андрей Максимов, 2008-2011

Яндекс цитирования