Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ограничение по времени

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
tuareg
Отправлено: 26 Июня, 2012 - 10:55:18
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Здравствуйте.
Как быть в следующей ситуации.
Есть скрипт, он может выполняться, "очень" долго минуты 2-4. Это нормально, уменьшить время работы не реально. У хостера стоит ограничение в 30 секунд.
Может есть какой-нибудь механизм как это обойти не используя

Типа чтобы он сам себя перезапускал секунд через 20?
 
 Top
Zuldek
Отправлено: 26 Июня, 2012 - 10:59:42
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




1. Оптимизируйте скрипт (почти всегда можно написать рациональнее)
2. Разбейте задачи и вызывайте их по очереди (1 скрипт либо несколько как вам удобнее и логичнее)
3. Если задача одна и толстая, - выполняйте её по таймлимиту, либо без (но с сохранением следующей на очереди подзадачи) чтобы сделал сколько успеет, а остальное при следующих вызовах.

(Отредактировано автором: 26 Июня, 2012 - 11:04:27)

 
 Top
EuGen Администратор
Отправлено: 26 Июня, 2012 - 11:04:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Чтобы просто перезапускал (если задача этого позволяет) - достаточно register_shutdown_function + system использовать, к примеру.
Или же высчитывать время (если нужно 20 секунд и не хочется аварийным способом вызывать перезапуск) от начала исполнения.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
tuareg
Отправлено: 26 Июня, 2012 - 11:05:03
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Zuldek пишет:
1. Оптимизируйте скрипт (90% что просто не рационально написан)

Там нечего оптимизировать. Это создание поискового индекса для сайта.
 
 Top
Zuldek
Отправлено: 26 Июня, 2012 - 11:08:08
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Тогда дверь номер 3 Подмигивание, разбирать скрипт, считать время от начала исполнения, сохранять операцию каждый шаг для подхвата при следующем вызове.
Или же исполнять операцию вне сервера хостера, а на него потом лить готовый индекс для поиска (если индекс формируется и хранится по аналогии с индексом сфинкса или плагинами зенда для этого дела).

(Отредактировано автором: 26 Июня, 2012 - 11:11:37)

 
 Top
tuareg
Отправлено: 26 Июня, 2012 - 11:11:09
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




EuGen А можно простой пример? Я просто не понял что значит
EuGen пишет:
+ system
 
 Top
Zuldek
Отправлено: 26 Июня, 2012 - 11:12:56
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




tuareg пишет:
EuGen А можно простой пример? Я просто не понял что значит
EuGen пишет:
+ system

Не для вашей задачи Улыбка
upd. поторопился, посмотрим, когда её изложат подробнее Улыбка

(Отредактировано автором: 26 Июня, 2012 - 11:29:43)

 
 Top
tuareg
Отправлено: 26 Июня, 2012 - 11:15:03
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Как выбирать и сохранять это все ясно. И время 20 секунд, я указал просто так.
Zuldek пишет:
при следующем вызове
Я и спрашиваю как его сделать--- следующий вызов.
Допустим выбрал я 20 записей, сделал с ними что надо. Все и тут мне надо чтобы скрипт перезапустился.

(Отредактировано автором: 26 Июня, 2012 - 11:16:40)

 
 Top
EuGen Администратор
Отправлено: 26 Июня, 2012 - 11:20:17
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Так а что не получается?
PHP:
скопировать код в буфер обмена
  1. usleep(100);
  2. {
  3.    system('/path/to/php '.__FILE__.' > /dev/null &');
  4. });
  5. //Ваш код


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
tuareg
Отправлено: 26 Июня, 2012 - 11:25:24
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




EuGen пишет:
Так а что не получается?

Сейчас все Улыбка . Я Ниндзя .
Спасибо
 
 Top
Zuldek
Отправлено: 26 Июня, 2012 - 11:25:27
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




tuareg пишет:
Как выбирать и сохранять это все ясно. И время 20 секунд, я указал просто так.
Zuldek пишет:
при следующем вызове
Я и спрашиваю как его сделать--- следующий вызов.
Допустим выбрал я 20 записей, сделал с ними что надо. Все и тут мне надо чтобы скрипт перезапустился.


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

(Отредактировано автором: 26 Июня, 2012 - 11:28:33)

 
 Top
tuareg
Отправлено: 26 Июня, 2012 - 11:29:06
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Zuldek Спасибо, Вам. EuGen уже ответил.
(Добавление)
Еще вопрос, чтобы не создавать новую тему.
PHP:
скопировать код в буфер обмена
  1.  
  2. system('/path/to/php '.__FILE__.' > /dev/null &');
  3.  

Как мне узнать '/path/to/php'
И что значит ' > /dev/null &'
 
 Top
EuGen Администратор
Отправлено: 26 Июня, 2012 - 12:28:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




tuareg пишет:
Как мне узнать '/path/to/php'

Так:

tuareg пишет:
И что значит ' > /dev/null &'

- перенаправление вывода "вникуда" (/dev/null - это не настоящее "устройство", а просто заглушка для таких целей), и перевод в фоновый режим (на это указывает амперсанд) - без этого system не вернет управление вызвавшему ее скрипту до тех пор, пока вызываемая при помощи неё команда не будет завершена.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
tuareg
Отправлено: 26 Июня, 2012 - 12:48:06
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)





А в самом скрипте PHP нельзя узнать?
Просто хотелось бы, просто все сделать Улыбка. Не лазая в настройки хостинга ищи где находится php.
 
 Top
fdr21
Отправлено: 26 Июня, 2012 - 12:49:03
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Июнь 2012  


Помог: 5 раз(а)




EuGen
PHP:
скопировать код в буфер обмена
  1. system('/path/to/php '.__FILE__.' > /dev/null &');

можно вопросик!
Что нам это дает, после завершение скрипта, через пару микросекунд, он снова себе же вызовет??? и так будет продолжатся сколько, бесконечно!!?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB