Помните, в PHP есть переменная, которая говорит, как долго должен выполняться скрипт. Макс-исполнение времени
Убедитесь, что вы не собираетесь это делать, или используйте set_time_limit (), чтобы увеличить время выполнения. Эта программа работает через веб-сервер или через Cli?
Добавление: Мой плохой опыт работы с PHP. Просматривая некоторые фоновые сценарии, которые я написал ранее в этом году. Извините, но PHP - ужасный язык сценариев, позволяющий делать что-либо в течение длительного времени. Я вижу, что более новый PHP (до которого мы не обновились) добавляет функциональность для запуска GC. У меня проблема с использованием слишком большого количества памяти, потому что GC почти никогда не запускается для очистки себя. Если вы используете вещи, которые ссылаются на себя рекурсивно, они также никогда не будут освобождены.
Создание массива из 100 000 элементов создает память, но затем установка массива в пустой массив или его объединение, НЕ освобождает его немедленно и не помечает как неиспользуемый (иначе создание нового массива из 100 000 элементов увеличивается память).
Моим личным решением было написать Perl-скрипт, который работал вечно, и system ("php my_php.php"); при необходимости, чтобы переводчик освободился полностью. В настоящее время я поддерживаю 5.1.6, это может быть исправлено в 5.3+ или, по крайней мере, теперь у них есть команды GC, которые можно использовать для принудительной очистки GC.
Простой скрипт
#!/usr/bin/perl -w
use strict;
while(1) {
if( system("php /to/php/script.php") != 0 ) {
sleep(30);
}
}
тогда в вашем php скрипте
<?php
// do a single processing block
if( $moreblockstodo ) {
exit(0);
} else {
// no? then lets sleep for a bit until we get more
exit(1);
}
?>