|
|
|
|
|
для: Artem S.
(05.03.2006 в 17:33)
| | Спасибо. Буду пробовать | |
|
|
|
|
|
|
|
для: Andrey_V
(05.03.2006 в 15:47)
| | <?php
$link="http://www.cbr.ru/scripts/XML_daily.asp?date_req=06.03.2006";
$fd = fopen($link, "r");
if (!$fd) {
echo "Unable to open\n";
} else {
stream_set_blocking($fp, 0);
stream_set_timeout($fp, 2);
$res = fread($fp, 2000);
$info = stream_get_meta_data($fp);
fclose($fd);
if ($info['timed_out']) {
echo 'Connection timed out!';
} else {
echo $res;
}
}
echo "<br>"."555555555555555";
?> | |
|
|
|
|
|
|
|
для: Artem S.
(05.03.2006 в 15:40)
| | А как здесь можно применить функцию stream_set_timeout?
Что-то я ее и так и сяк крутил - все никак не получается. | |
|
|
|
|
|
|
|
для: Andrey_V
(05.03.2006 в 13:15)
| | еще попробуйте функцию
stream_set_timeout
http://ru2.php.net/stream_set_timeout
//$errno == "10060"
Это только для windows | |
|
|
|
|
|
|
|
для: Andrey_V
(05.03.2006 в 13:15)
| | Думаю, тут можно только сокетами. А потом - избавиться от заголовков в начале ответа и получим запрашиваемый XML-файл. | |
|
|
|
|
|
|
|
для: Artem S.
(04.03.2006 в 18:54)
| | Вот подработал. Т.е. даю тот кусок кода, который вызывает интерес.
=================================
<?php
set_time_limit(2);
$link="http://www.cbr.ru/scripts/XML_daily.asp?date_req=06.03.2006";
$fd = fopen($link, "r");
echo "<br>"."555555555555555";
?>
=================================
Результаты его работы следующие.
1. Если все срабатывает нормально, то исполняется он мгновенно.
2. Если нет доступа к файлу (имитирую на локальном сервере с отключенным доступом в Интернет), то скрипт выполняется секунд 15, потом выдает ошибку, что не может получить данные. И не реагирует на установку времени выполнения.
3. А хочется, чтобы при отсутствии связи (т.е. реально при отсутствии возможности получения информации) выполнение скрипта прекращалось через несколько секунд (например, 3 или 5). А то очень долго ждать открытия страницы. | |
|
|
|
|
|
|
|
для: Andrey_V
(04.03.2006 в 16:57)
| | если не трудно прилажите сюда часть кода. | |
|
|
|
|
|
|
|
для: Artem S.
(04.03.2006 в 16:39)
| | Скрипт брал, кажется, на этом же сайте где-то. Формируется запрос с указанием файла, содержащего информацию на сайте ЦБ (типа: дата, на которую нужен курс25022006.text). Запрос идет туда, информацию о курсах оттуда к нам. Но были случаи, когда получаю ответ, что такого файла нет. Хотя на самом деле он есть. Т.е. где-то какой-то сбой. Но в этом случае у меня вместо страницы отражается сообщение об ошибке. Через несколько минут повторяю запрос, информация приходит нормально. Так надо сделать, чтобы при сбое все равно выходила нормальная страницы | |
|
|
|
|
|
|
|
для: Andrey_V
(04.03.2006 в 15:45)
| | Как получается информация с сайта ЦБ, каким образом? | |
|
|
|
|
|
|
|
для: Artem S.
(04.03.2006 в 15:08)
| | Попробую написать конкретнее, если получится:
У меня каталог. В нем цены в валюте. При выводе каталога запрашивается сайт центробанка, получаются курсы валют. С их помощью цены пересчитываются в рубли.
Что будет, если по какой-то причине не удастся получить информацию с сайта ЦБ? Появляется сообщение о том, что время исполнения истекло. На экране только сообщение об ошибке и все. А надо, чтобы в этом случае скрипт брал из базы данных информацию о курсах за вчерашний день.
Сами курсы получаются достаточно быстро, если нет каких-то проблем на сайте ЦБ или в канале связи. И хотелось бы, чтобы время запроса было ограничено, например 5 сек. Если за это время информация не получена - считаем что произошел сбой.
В обычных программах пишу обработчик ошибки, типа: если ошибка, то продолжаем исполнение скрипта с значением переменных, например, $USD = 28,8, $EURO = 34.2 (из базы данных).
Если опять не так изложил - напишите, попробую еще как-то изложить. | |
|
|
|
|