Есть ли ограничение на количество времени, которое сервер может обрабатывать? - PullRequest
0 голосов
/ 07 августа 2011

У меня есть следующий файл, который обрабатывает один файл XML и помещает его в базу данных в виде строки.Он отлично работает для отдельных файлов.

Теперь я хотел поместить ВСЕ файлы в каталоге вот так в базу данных и, следовательно, написал сценарий для перехода по каталогу.и нажмите все файлы в нем по одному.И ДА, это сработало, но остановилось после обработки XX (переменного) количества файлов

Я, возможно, что-то не так с моим XML-файлом, поэтому решилпросто поместите ОДИН XML-файл (который был отлично обработан ранее) в каталоге и просто зациклите его, вставляя его сотни раз, чтобы я мог подтвердить, что это проблема с моими файлами.Но угадайте, что случилось?

После обработки XX (переменного) количества файлов обработка останавливается .В моем примере, приведенном ниже, он остановился на 110 (контр-валь), 111, 99 и т. Д. После повторных попыток.Где он должен был обработать 1000 файлов.

<?php
include_once '../includeTop.php';

header ( 'Content-type: text/xml' );

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$dir = "../../newHotelFiles";
$file = NULL;
$fileName = "noFileName";

$processed = 0;
util::writeToLog ( $dir . '/progressData.tmp', "Files processed: $processed" );
try {

    echo XMLInterface::openTag ( "start" );
    for($counter = 0; $counter < 1000; $counter ++) {
        $dirHandle = opendir ( '../../newHotelFiles' );
        while ( false !== ($file = readdir ( $dirHandle )) ) {
            //process my files codes

                $processed ++;
                util::writeToLog ( $dir . '/progressData.tmp', "Files processed: $processed" );


            }

        }

    //util::writeToLog($dir.'/progressData.tmp', "Done ".$counter);
    }
    echo XMLInterface::closeTag ( "start" );
    exit ();
} catch ( Exception $e ) {
    echo XMLInterface::failure ( "Error occured. Written to the log file - $file.log" );
    util::writeToLog ( "../../newHotelFiles/$fileName.log", ExceptionHandler::error_msg ( $e ) );
    exit ();
}

?>

В чем проблема?Является ли это сценарий (который я сомневаюсь, как он работает, когда цикл for не существует) или Есть ли какой-либо серверный лимит, я не знаю о

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

есть максимальный лимит времени выполнения в php, называемый set_time_limit ();(вместе с другими)

        set_time_limit(0); // sets to unlimited
1 голос
/ 07 августа 2011

Сценарий может быть прерван из-за ограничения по времени.Попробуйте изменить set_time_limit .

...