Запуск скрипта, который (может) занять очень много времени на PHP

Я запускаю php-скрипт как задание cron, которое может занять очень много времени. Он создаст массивный XML-файл и сохранит его.

Что мне следует придумать, если я это реализую?

Одна вещь, которую я делаю, это установить max_execution_time на долгое время:

ini_set('max_execution_time', 300);

Есть ли что-нибудь еще, что я должен сделать? Увеличить лимит памяти? Помогает ли это, если поставить заголовок «keep-alive»?

Что я могу сделать, чтобы убедиться, что скрипт всегда будет работать, пока не будет сделано все необходимое?


person Community    schedule 29.10.2013    source источник
comment
Чего ты пытаешься бежать?   -  person Mazzy    schedule 30.10.2013
comment
Я импортирую огромное количество данных с другого сервера, используя их API, и сохраняю все это в виде файла xml.   -  person    schedule 30.10.2013
comment
php может быть не тем, что вы ищете, php довольно медленно обрабатывает большие объемы данных по сравнению с другими языками.   -  person Mazzy    schedule 30.10.2013
comment
Безусловно, но в данном случае использование PHP, к сожалению, для меня единственная возможность.   -  person    schedule 30.10.2013


Ответы (1)


Вы можете удалить ограничение времени выполнения, используя функцию set_time_limit, передав 0 в качестве параметра:

set_time_limit(0);

Добавление заголовков HTTP не поможет, потому что, поскольку это скрипт cronjob, вы не имеете дело с браузером.

person Guilherme Sehn    schedule 29.10.2013
comment
Есть ли разница между max_execution_time и set_time_limit? - person ; 30.10.2013
comment
Если вы не вызовете set_time_limit, PHP будет использовать значение max_execution_time из php.ini для его определения. И ini_set('max_execution_time', ...), и set_time_limit(...) будут устанавливать это значение только для текущего запроса, поэтому я думаю, что между ними нет практической разницы. - person Guilherme Sehn; 30.10.2013
comment
Я понимаю, поэтому в целом этого должно быть достаточно, чтобы убедиться, что скрипт, работающий как задание cron, выполнит свою работу? - person ; 30.10.2013
comment
Что ж, если ваш скрипт очень сложный (или плохо оптимизированный), есть вероятность, что он достигнет предела памяти, но это трудно измерить. Сделайте несколько тестов с реальными данными, и если они достигнут, вы можете увеличить их, установив конфигурацию memory_limit через ini_set. - person Guilherme Sehn; 30.10.2013