Ограничение в 30с на выполнение скрипта

WoLFiks

Не курю...
Ограничение в 30с на выполнение скрипта

Чаще всего время выполнения скрипта у хостеров ограничиваеться 30 секундами.
(это конечно большущее время для генерации страницы, НО для некоторых задач и их мало...)

Вопрос.
Можно ли отследить (PHP), что какая-то либо функция выполняеться, например 10 секунд, если этот лимит для нее превышен, то передать управление другой функции?

Либо ограничить функцию лимитом в 10 сек и по их завершении передавать управление в другую, если же лимит не превышен, то продолжать без "ветвлений"?
 

Активист

Активист
Команда форума
умный в гору не пойдет, умный купит VDS =)
А вообще нет.

-~{}~ 31.08.07 04:44:

а почему бы не бзать set_time_limit() ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Можно ли отследить (PHP), что какая-то либо функция выполняеться, например 10 секунд, если этот лимит для нее превышен, то передать управление другой функции?
$start_time = time();
for ($i=1; $i>0; $i++){
if (time()-$start_time >= 10) next_func();
}

-~{}~ 31.08.07 03:54:

Вечно знаки путаю. исправил.
 

WoLFiks

Не курю...
$start_time = time();
for ($i=1; $i>0; $i++){
if (time()-$start_time >= 10) next_func();
}
Т.е. идея я так понимаю такова:
$start_time = time();
for ($i=1; $i>0; $i++){
if (time()-$start_time >= 10) next_func();
ELSE first_func();
}

НО работать то не будет, т.к. если подвиснет все в first_func(), цикл то выполняться не будет, пока не будет завершена first.
Необходима НЕ задержка перед выполнением, а передача выполнения по истечении отведенного времени.
 

dimagolov

Новичок
WoLFiks
ты все не так понял. проверять время надо внутри той функции, которая может долго выполняться. или это библиотечные функции у тебя долго выполняются? если да, то какие?
 

Андрейка

Senior pomidor developer
WoLFiks
а в чем смысл этого? функция выполняющаяся более 10 сек не бесконечный же цикл у тебя гоняет?
 

WoLFiks

Не курю...
Смысл. (ограничение в 10сек - условно)
Есть около 20 филиалов. Функция, которую необходимо ограничить по времени ожидания - собирает данные об остатках и т.д. Используя либо file_get_contents, либо сокеты... да не принципиально как. Так вот, если на одном из филиалов какой-либо "затуп)" (всяких проблем хватает), то она будет ждать ответа, пока не закончится лимит в 30. И потом естественно весь скрипт завершается. А хотелось бы, при неполучении никакого ответа от филиала в течении определенного лимита заняться обработкой следующего филиала.

PHP использовать принципиально. Львиная доля всего проекта еще до меня написана на нем.
1С также не приплитать сюда. Надо именно PHP решение!
В кодах и приложениях на филиалах никаким образом исправлять ничего не могу. Хотя тогда бы очень все было просто...
+ моя часть работает на хостере, к специфическим настройкам которого я также, естествено, не имею ни какого доступа...
 

Андрейка

Senior pomidor developer
>да не принципиально как.
действительно
[m]fsockopen[/m](,,,,,timelimit)
[m]stream_set_timeout[/m]
 
Сверху