Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2011, 05:15
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Ограничение по времени выполнения отдельных участков кода
Допустим имеется:

for($i=1;$i<=10;$i++) {

// тут мы выполняем некие действия которые теоретически могут 
// затянуться по времени, а нам это не нужно, и мы хотим в этом 
// случае оборвать скрипт

}


Допустим я хочу на каждую итерацию цикла установить 30 секунд, то как мне это сделать? Нужно что-то типа:

$limit=30;
for($i=1;$i<=10;$i++) {
set_time_limit($limit); $limit+=30;
// тут мы выполняем некие действия которые теоретически могут 
// затянуться по времени, а нам это не нужно, и мы хотим в этом 
// случае оборвать скрипт

}


Подскажите так можно написать? (я не знаю как это проверить). Может подскажете более правильный вариант.
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2011, 06:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

запускать по cron'у каждый 30 секунд, а в скрипте учесть, что он может не успеть что-то сделать. А вообще сложно отвечать на такой абстрактный вопрос
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2011, 10:51
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Считай (пример 1) длительность и анализируй если надо соскочить с некой итерации цикла
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2011, 11:18
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Сообщение от x-yuri
А вообще сложно отвечать на такой абстрактный вопрос
хм) а мне вопрос показался достаточно конкретным, могу даже переформулировать: "как задать ограничение по времени на выполнение участка кода?"

Сообщение от micscr
Считай
да это конечно понятный вариант, но дело в том, что если скрипт большой, то придется в большое количество мест вставлять проверку времени...

А вот такая конструкция разве не поможет?
set_time_limit($limit); $limit+=30;

Допускается ли использование set_time_limit несколько раз? будет ли она при этом работать?
ПС: проблема еще в том, что я не могу придумать способа это проверить...
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2011, 11:51
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от greatilya
хм) а мне вопрос показался достаточно конкретным, могу даже переформулировать: "как задать ограничение по времени на выполнение участка кода?"
нет, конкретный вопрос это "как подключить этот конкретный jquery-плагин на мой сайт", а абстрактный вопрос - как работает set_time_limit, потому что не ясен контекст, в котором возник вопрос. А решение задачи, как мы знаем зависит от контекста. Когда ты добавил немного контекста (скрипт большой), стало понятно, что из двух решений одно лучше подходит. А если ты еще контекста добавишь, может появиться третье решение

Сообщение от greatilya
Допускается ли использование set_time_limit несколько раз? будет ли она при этом работать?
ПС: проблема еще в том, что я не могу придумать способа это проверить...
оно так не работает. Проверить можно так
$limit=2;
for ($i=0; $i<10; $i++) {
  echo '.';
  if ($i == 1)
    echo "\nyou ain't gonna see this\n";
  set_time_limit($limit);
  $limit += 2;
  sleep( 3 );
}
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2011, 15:03
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Сообщение от x-yuri
оно так не работает
всё, спасибо, понял.
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скорость выполнения кода mycoding Общие вопросы Javascript 6 23.04.2010 13:28