Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как задать время выполнения скрипта

Сообщения:  [1-10]   [11-14] 

 
 автор: Andrey_V   (11.03.2006 в 00:45)   письмо автору
 
   для: Artem S.   (05.03.2006 в 17:33)
 

Спасибо. Буду пробовать

   
 
 автор: 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";
?>

   
 
 автор: Andrey_V   (05.03.2006 в 15:47)   письмо автору
 
   для: Artem S.   (05.03.2006 в 15:40)
 

А как здесь можно применить функцию stream_set_timeout?
Что-то я ее и так и сяк крутил - все никак не получается.

   
 
 автор: Artem S.   (05.03.2006 в 15:40)   письмо автору
 
   для: Andrey_V   (05.03.2006 в 13:15)
 

еще попробуйте функцию
stream_set_timeout
http://ru2.php.net/stream_set_timeout

//$errno == "10060"
Это только для windows

   
 
 автор: Саня   (05.03.2006 в 15:00)   письмо автору
 
   для: Andrey_V   (05.03.2006 в 13:15)
 

Думаю, тут можно только сокетами. А потом - избавиться от заголовков в начале ответа и получим запрашиваемый XML-файл.

   
 
 автор: Andrey_V   (05.03.2006 в 13:15)   письмо автору
 
   для: 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). А то очень долго ждать открытия страницы.

   
 
 автор: Artem S.   (04.03.2006 в 18:54)   письмо автору
 
   для: Andrey_V   (04.03.2006 в 16:57)
 

если не трудно прилажите сюда часть кода.

   
 
 автор: Andrey_V   (04.03.2006 в 16:57)   письмо автору
 
   для: Artem S.   (04.03.2006 в 16:39)
 

Скрипт брал, кажется, на этом же сайте где-то. Формируется запрос с указанием файла, содержащего информацию на сайте ЦБ (типа: дата, на которую нужен курс25022006.text). Запрос идет туда, информацию о курсах оттуда к нам. Но были случаи, когда получаю ответ, что такого файла нет. Хотя на самом деле он есть. Т.е. где-то какой-то сбой. Но в этом случае у меня вместо страницы отражается сообщение об ошибке. Через несколько минут повторяю запрос, информация приходит нормально. Так надо сделать, чтобы при сбое все равно выходила нормальная страницы

   
 
 автор: Artem S.   (04.03.2006 в 16:39)   письмо автору
 
   для: Andrey_V   (04.03.2006 в 15:45)
 

Как получается информация с сайта ЦБ, каким образом?

   
 
 автор: Andrey_V   (04.03.2006 в 15:45)   письмо автору
 
   для: Artem S.   (04.03.2006 в 15:08)
 

Попробую написать конкретнее, если получится:
У меня каталог. В нем цены в валюте. При выводе каталога запрашивается сайт центробанка, получаются курсы валют. С их помощью цены пересчитываются в рубли.
Что будет, если по какой-то причине не удастся получить информацию с сайта ЦБ? Появляется сообщение о том, что время исполнения истекло. На экране только сообщение об ошибке и все. А надо, чтобы в этом случае скрипт брал из базы данных информацию о курсах за вчерашний день.
Сами курсы получаются достаточно быстро, если нет каких-то проблем на сайте ЦБ или в канале связи. И хотелось бы, чтобы время запроса было ограничено, например 5 сек. Если за это время информация не получена - считаем что произошел сбой.
В обычных программах пишу обработчик ошибки, типа: если ошибка, то продолжаем исполнение скрипта с значением переменных, например, $USD = 28,8, $EURO = 34.2 (из базы данных).
Если опять не так изложил - напишите, попробую еще как-то изложить.

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования