[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Правильно написал код или нет...
Astin
Приветствую Форумчане!

Решил сделать для сайта виджет курса валют.

Для Казахстана парсир гугл www.google.com/finance/converter

Написал вот такой код
<?php

define('KEY', true);
//////////////////////////////////////////////////

$from[1] = 'USD';
$from[2] = 'EUR';
$from[3] = 'RUB';
$to = 'KZT';
$i = 0;

// Рисуем табличку
$kurs = "<div class=\"kursy\">\n";

while($i <= 2) {
$i++;
$get = file_get_contents("https://www.google.com/finance/converter?a=1&from=$from[$i]&to=$to");
$get = explode("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]);
$converted_amount = round($converted_amount,2);

switch($from[$i]){

case 'USD':
$flags = "usa.png";
break;
case 'EUR':
$flags = "euro.png";
break;
case 'RUB':
$flags = "rus.png";
break;
}

$kurs .= "<table>\n";
$kurs .= "<tr>\n";
$kurs .= "<td class=\"krs\">".$from[$i]."</td>\n";
$kurs .= "<td class=\"krs1\"><img src=\"http://olm.kz/skins/images/".$flags."\" /></td>\n";
$kurs .= "<td class=\"krs2\">".$converted_amount." тг<br/></td>\n";
$kurs .= "</tr>";
$kurs .= "</table>";
}
$kurs .= "</div>\n";

echo json_encode($kurs);


На сайт я его подгружаю через аякс. Но вот в логах порой появляется ошибка вида
Цитата
PHP Warning:  file_get_contents(https://www.google.com/finance/converter?a=1&amp;from=EUR&amp;to=KZT) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: Connection timed out in /home/c/cl12605/rinat/public_html/php/kurs.php on line 17

Как раз ссылается на file_get_contents

Немного погуглив понял что нужно использовать не file_get_contents, а CURL.

Посмотрев мануал попробовал написать на CURL, но конечно получилось
не с первого раза.
Написал код вот так
<?php

define('KEY', true);
//////////////////////////////////////////////////

$from[1] = 'USD';
$from[2] = 'EUR';
$from[3] = 'RUB';
$to = 'KZT';
$i = 0;

// Рисуем вывод
$kurs = "<div class=\"kursy\">\n";

while($i <= 2) {
$i++;
$pars = curl_init();
curl_setopt($pars, CURLOPT_URL, "https://www.google.com/finance/converter?a=1&from=$from[$i]&to=$to");
curl_setopt($pars, CURLOPT_HEADER, false);
curl_setopt($pars, CURLOPT_RETURNTRANSFER, true);
curl_setopt($pars, CURLOPT_CONNECTTIMEOUT, 5);
$get = curl_exec($pars);
curl_close($pars);
$get = explode("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]);
$converted_amount = round($converted_amount,2);

switch($from[$i]){

case 'USD':
$flags = "usa.png";
break;
case 'EUR':
$flags = "euro.png";
break;
case 'RUB':
$flags = "rus.png";
break;
}

$kurs .= "<table>\n";
$kurs .= "<tr>\n";
$kurs .= "<td class=\"krs\">".$from[$i]."</td>\n";
$kurs .= "<td class=\"krs1\"><img src=\"http://olm.kz/skins/images/".$flags."\" /></td>\n";
$kurs .= "<td class=\"krs2\">".$converted_amount." тг<br/></td>\n";
$kurs .= "</tr>";
$kurs .= "</table>";
}
$kurs .= "</div>\n";

echo json_encode($kurs);


Вроде работает, причем намного быстрее чем с file_get_contents

Так вот, правильно ли написан код или я может что упустил из виду?


_





Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.