Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> set_time_limit() 
:(
    Опции темы
letsgo
Дата 14.3.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.2.2009

Репутация: нет
Всего: нет



Добрый день.
На хостинге стандартное ограничение в 30 секунд.
Воспользовался set_time_limit()

Однако, возник вопрос, иногда время выполнения скрипта занимает порядка 20 секунд, а иногда и 100 секунд не хватает. Т.е. не подгадать.
Если ставить фиксированное значение, то оно может оказаться недостаточным для выполнения скрипта.
Есть ли какая-то функция, позволяющая например, останавливать выполнение скрипта и скажем грубо, "начинать вновь с места остановки через n секунд".
Ну, или как-то с set_time_limit() придумать что-то можно?

Или еще, как решение проблемы, вижу, что-то вроде многопоточности...
Но с этим ни разу не сталкивался и как организовать не знаю, но как говорится, если надо, так надо smile
Поэтому вопрос, что лучше в такой ситуации?
PM MAIL   Вверх
NNaarreekk
Дата 14.3.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



set_time_limit(0) делает время бесконечным (если конечно сервер не на сейф моде).
Но конечно в таком случае если случаем бесконечный цикл получится то пипец!
PM MAIL WWW   Вверх
letsgo
Дата 14.3.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.2.2009

Репутация: нет
Всего: нет



NNaarreekk, ясно. спасибо.

А вот про это ничего не можете сказать?
Цитата

Есть ли какая-то функция, позволяющая например, останавливать выполнение скрипта и скажем грубо, "начинать вновь с места остановки через n секунд".


Цитата

решение проблемы, вижу, что-то вроде многопоточности...

PM MAIL   Вверх
NNaarreekk
Дата 14.3.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



Ну можешь после каждого шага(или если в функции цикл,то после каждого круга) проверять время вы полнения и если больше чем надо то return false;
А потом как нибудь опять вызываешь, примерно так:
Код

function qwerty($count){
    $time=date('U');
    for($i=0;$i<$count;$i++){
        if(date('U')-$time>123)return false;
        /*-----Твой код-----*/
        $time=date('U');
    }
return true;
}

//вызываешь это скажем так
while(!qwerty(222))continue;


Пример может извращенеский, написал то что пришло в голову! smile 

Это сообщение отредактировал(а) NNaarreekk - 14.3.2009, 12:39
PM MAIL WWW   Вверх
skyboy
Дата 14.3.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(NNaarreekk @  14.3.2009,  11:39 Найти цитируемый пост)
while(!qwerty(222))continue;

тебя порвет хостер за нагрузку на сервер.
или сам себя порвешь, если сервер собственный.
если задержка будет поболее 0,01 секунды.
PM MAIL   Вверх
NNaarreekk
Дата 14.3.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



skyboy, я не понял, откуда нагрузка возьмется??
Ну понимаю что нагрузка увеличится, но если нужно повторно вызвать, то как бы не вызывай все равно нагрузка увеличится!
PM MAIL WWW   Вверх
skyboy
Дата 14.3.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



конструкция 
Цитата(NNaarreekk @  14.3.2009,  11:39 Найти цитируемый пост)
while(!qwerty(222))continue;

не даст выполнится коду 
Цитата(NNaarreekk @  14.3.2009,  11:39 Найти цитируемый пост)
 /*-----Твой код-----*/

раньше некоторого времени. но сама проверка(вычисление разницы между текущим временем и начальным) отнюдь не "бесплатна". и происходить эта проверка будет не "раз в секунду", а постоянно.
вот напиши на любом языке программирования программу типа:
Код

while(true) gettime();

и посмотри на загрузку процессора
PM MAIL   Вверх
NNaarreekk
Дата 14.3.2009, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



ОК понятно!
А как писать то?
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.