Процесс убит за чрезмерное использование ресурсов

Сегодня я тестировал некоторые скрипты в консоли, которые, казалось, имели проблемы на стороне сервера, и для определенного файла я получил следующий совет:

Хлоп! Один из ваших процессов (php, pid 15278) был просто убит из-за чрезмерного использования ресурсов.
Пожалуйста, свяжитесь со службой поддержки DreamHost для получения подробной информации.

Хорошо, понял, я должен обновить свой хостинг, но я не понимаю, почему иногда это происходит, очевидно, с гораздо большим использованием ресурсов.

Кусок кода, обрабатывающий файл, который вызывает ошибку, генерирует этот отупут:

Iteration 1 Start
Memory Usage At the Start: 31,179.26Kbytes //Got with memory_get_usage
Memory Usage At the End: 26,350.64Kbytes
Duration:14
Iteration 2 Start

Yikes! One of your processes (php, pid 15278) was just killed for excessive resource usage.
Please contact DreamHost Support for details.

Однако, используя другой файл (больший), я получаю следующий журнал:

Iteration 1 Start
Memory Usage At the Start: 132,115.70Kbytes
Memory Usage At the End: 26,350.64Kbytes: 129,268.95Kbytes
Duration:34
Iteration 2 Start
Memory Usage At the Start: 131,368.04Kbytes
Memory Usage At the End: 129,287.41Kbytes
Duration:36
....

И так далее….

И вопрос в том, почему я всегда получаю одну и ту же ошибку для 1-го файла, который, кажется, использует гораздо меньше памяти, а второй завершает свои 12 итераций без единой проблемы? Есть предположения?

ОБНОВЛЕНИЕ: КОД ДОБАВЛЕН

foreach ( $worksheets as $worksheet ){
$this->ultimo_apunte = NULL;
for ( $i=1; $i < $worksheet["totalRows"]; $i+=self::$chunk_size ){
echo "\Iteration".(($i-1)/250+1);
$comienzo_iteracion = time();
$filter = new ExcelReadFilter($i, self::$chunk_size);
$reader->setReadFilter($filter);
$objPHPExcel = $reader->load($excel_file);
$objPHPExcel->setActiveSheetIndexByName($worksheet["worksheetName"]);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,false,true);
$c = 0;

foreach ( $sheetData as $rowIndex => $row ){
if (!isset($apunte)) {
$apunte = Apunte::conFila($row);
if ( $apunte->completo() ){
$apunte->ejercicio = "N/A";
fwrite($f, $apunte->insert_stmt());
$this->ultimo_apunte = $apunte;
unset($apunte);
}
}
else{
$apunte->completar($row);

if ( $apunte->completo() ){
$apunte->ejercicio = "N/A";
fwrite($f, $apunte->insert_stmt());
$this->ultimo_apunte = $apunte;
unset($apunte);
}
}
}
echo "\nMemory Usage At the Start: ".number_format((memory_get_usage()/1024), 2)."Kbytes";
unset($sheetData);
unset($objPHPExcel);echo "\nMemory Usage At the End: ".number_format((memory_get_usage()/1024), 2)."Kbytes";

$fin_iteracion = time();
$it_duration = $fin_iteracion - $comienzo_iteracion;
$iteraciones_completadas+=1;

if ( !$process ) {
$process = new stdClass;
$process->start_time = date("Y-m-d");
}

if ( $iteraciones_completadas == 0 ){
$process->ellapsed_time = 0;
}else{
$process->ellapsed_time = $fin_iteracion - strtotime($process->start_time);
}

$process->estimated_time = $process->ellapsed_time+$it_duration*($num_iteraciones - $iteraciones_completadas);
echo "\nDuration:".$it_duration."";
//log_string(ob_get_contents());
//ob_clean();
if ( method_exists($process, "saveToFile" )) $process->saveToFile();
}
}
fclose($f);

global $db;

$sql = "LOAD DATA LOCAL INFILE '".$db->real_escape_string($sql_file)."'
INTO TABLE apuntes
FIELDS TERMINATED BY ','
ENCLOSED BY '".'"'."'
ESCAPED BY '\\\'
LINES TERMINATED BY '\\n'
(id_diario, fecha, asiento, apunte, cuenta, descripcion, concepto, debe, haber, es_apertura, es_cierre, ejercicio);
";

error_reporting(0);
$db->query($sql);

Простите за беспорядок….

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]