[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Время ожидания запроса истекло
Юрий Шу
Есть php скрипт, который собирает и обрабатывает информацию с другого сайта. Но при задании большого объема для сбора информации скрипт выдает:
«Время ожидания запроса истекло» и не выполнется.

Как можно это поправить? Может пошаговое выполнение или что-то подобное?



Спустя 5 минут, 44 секунды (20.05.2009 - 12:14) jetistyum написал(а):
если max_execution_time - лечится выставлением бесконечного времени выполнения скрипта

если просто при попытке получить информацию с удаленного хоста, то нужно устанавливать время ожидания и обрабатывать ошибку - пропускать хост, или пытаться повторно получить данные ... если не ошибаюсь, curl-e это можно сделать

Спустя 2 минуты, 33 секунды (20.05.2009 - 12:17) Юрий Шу написал(а):
Цитата (jetistyum @ 20.05.2009 - 09:14)
если max_execution_time - лечится выставлением бесконечного времени выполнения скрипта

если просто при попытке получить информацию с удаленного хоста, то нужно устанавливать время ожидания и обрабатывать ошибку - пропускать хост, или пытаться повторно получить данные ... если не ошибаюсь, curl-e это можно сделать

А как поставить бесконечное время выполнение скрита, и что значит max_execution_time?

По поводу второго?? Оно нужно, если не первое? smile.gif
Можно код привести какой-нибудь?

Спустя 35 минут, 7 секунд (20.05.2009 - 12:52) jetistyum написал(а):
max_execution_time

по поводу второго - второе отвечает за выполнение запроса у удаленному хосту,
первое - за выполнение скрипта.

Спустя 1 час, 27 минут, 24 секунды (20.05.2009 - 14:19) Han написал(а):
Цитата (jetistyum @ 20.05.2009 - 09:14)
если max_execution_time - лечится выставлением бесконечного времени выполнения скрипта

А как залезть в php.ini если твой сайт стоит на хосте. Просить админа чтобы выставил больше 30 секунд на выполнение? Если да, то я сомневаюсь ,что из за одного сайта он будет менять условия для всех на хосте.

Спустя 9 минут, 25 секунд (20.05.2009 - 14:29) glock18 написал(а):
PHP
ini_set('max_execution_time'0);

Спустя 1 час, 12 минут, 13 секунд (20.05.2009 - 15:41) Юрий Шу написал(а):
И в .htacсess увеличивал время, и с помощью ini_set устанавливал. Все равно через минуту (хотя на сервере max_execution_time = 30) программа перестает выполняться.

Может дело в том, что скрипт удаленно подключается к другому сайту??
Администратор хостинга посоветовал сделать, чтобы скрипт работал с определенным интервалом, сохраняя промежуточные данные.

Кто-нибудь с этим сталкивался?

Спустя 5 часов, 20 минут, 13 секунд (20.05.2009 - 21:01) kirik написал(а):
Цитата (Юрий Шу @ 20.05.2009 - 07:41)
хотя на сервере max_execution_time = 30

Если мне не изменяет память, это 30 секунд..

Вероятно что администратор сервера запретил изменять некоторые значения php.ini, тогда слушайся его (админа), или делай шелл скрипт выполняющий ту же работу (или на perl).

А что за скрипт вообще такой?

Спустя 10 часов, 39 минут, 30 секунд (21.05.2009 - 07:41) Юрий Шу написал(а):
kirik, скрипт собирает данные из таблицы с удаленного сайта, анализирую около 600 страниц. Поэтому и долго.

А есть примеры этого шелл-скрипта?? От чего откталкиваться?

Спустя 8 минут, 20 секунд (21.05.2009 - 07:49) kirik написал(а):
А если разбить твой скрипт на подзадачи? Например один скрипт только качает содержимое в локальную папку, второй анализирует.. Или еще сам анализ разбить на несколько подзадач.

Цитата (Юрий Шу @ 20.05.2009 - 23:41)
От чего откталкиваться?

Спустя 45 минут, 3 секунды (21.05.2009 - 08:34) sergeiss написал(а):
Цитата (Юрий Шу @ 21.05.2009 - 07:41)
kirik, скрипт собирает данные из таблицы с удаленного сайта, анализирую около 600 страниц. Поэтому и долго.

Так может, проще сделать так, чтобы один скрипт анализировал данные с одной страницы, после чего вызывал "сам себя" с указанием продолжить обработку? Сделать это не сложно будет. Но отсчет лимитов будет идти каждый раз заново.
Тогда (в среднем) одна обработка займет около 1/600 от нынешнего времени, во всякие лимиты влезешь.

Спустя 6 минут, 51 секунда (21.05.2009 - 08:41) Юрий Шу написал(а):
kirik, я хотел так сделать.
Скажите, как можно передать значение переменной (массива) в другой скрипт?


Цитата
после чего вызывал "сам себя"

sergeiss, а вот это как делается?

Спустя 20 минут, 58 секунд (21.05.2009 - 09:02) sergeiss написал(а):
Цитата (Юрий Шу @ 21.05.2009 - 08:41)
Цитата
после чего вызывал "сам себя"

sergeiss, а вот это как делается?

2 варианта.

1. javascript - по окончании очередного шага обработки вызываем другой скрипт. Как частный случай - "сам себя", при этом можно указать любые параметры.
2. Через header( "Location: ...." ); И почитай тему http://phpforum.ru/index.php?showtopic=17590&hl= о том, как обойти проблемы работы с этой функцией.

И в том, и в другом случае ты можешь указать любые параметры.

Например, реализация 1-го варианта у меня (скрипт с именем load_one_file):
PHP
echo "<script language=\"JavaScript\"> location.href=\"load_one_file.php?listfile=$ListFile&order=".($order+1).
        "&omc=$omc&date=$date\"; target=\"blank\"</script>";

Обработка идет до тех пор, пока в файле, имя которого находится в переменной $ListFile, имеются имена файлов для обработки. А они там убывают по мере обработки: обработал файл - удалил его имя из списка.

PS. Собственно, можно и сессии использовать для передачи параметров... Мой вариант мне чем нравится - он более наглядный smile.gif Скрипт запускается как автоматически, так и вручную. При ручном запуске видно процесс обработки, причем очень наглядно. Прямо в адресной строке меняется параметр order.
Быстрый ответ:

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