Цепные скрипты cron позволяют получить ограничение в 30 секунд - PullRequest
1 голос
/ 23 июня 2011

У меня есть нечастый скрипт cron генератора пользовательских карт сайта, который мне нужно запустить на сайте, который в настоящее время находится на общем сервере HostGator.Сценарий генератора написан на PHP и выполняется с помощью следующей команды cron:

php public_html / mysite.com / core / update.php> update.log

Процесс генерации включает вызоввнутренний API и вычисления расстояния, основанные на результате, поэтому для выполнения сценария обычно требуется 5-10 минут.Жестко запрограммированное ограничение времени выполнения PHP составляет 30 секунд для общих серверов HostGator.

Можно ли как-нибудь заставить мой скрипт разбить себя на более мелкие процессы?Кто-нибудь знает, достигнет ли 30-секундный лимит перекодировки в Perl или Python?

Ответы [ 2 ]

2 голосов
/ 06 июня 2012

положить это

set_time_limit(30);

внутри функции или цикла, где ваш код тратит большую часть своего времени, должно сработать.

1 голос
/ 23 июня 2011

Вы можете попробовать разветвление.Вы должны убедиться, что каждый форк может выполнить свою работу, и создать новый форк в течение 30 секунд.Поскольку ответвление является копией запущенного процесса, вы сохраняете все данные, которые вы извлекли.

В качестве альтернативы, используйте multi-curl, чтобы взорвать ваш сервер сразу несколькими запросами и завершить весь процессдо 30 секунд.Конечно, вам нужно было бы правильно распределить работу.

...