2015-12-17 7 views
-1

Я использую AJAX, чтобы получить некоторые данные JSON из файла на моем сервере.PHP циклический просмотр внутренней ошибки файла без журналов

Серверный код

$file = fopen($path); /*~1M rows and ~650MB file*/ 

/*Headers*/ 
$cols = fgetcsv($file); 
$cols[0] = 'id'; 

/*Loop through each line*/ 
$file_arr = []; 
while (($line = fgetcsv($file)) !== FALSE) { 
    $file_arr[] = array_combine($cols,$line); 
    /*The code crashes somewhere during this loop*/ 
} 
fclose($file); 

/*Returns some JSON*/ 

Однако я получаю внутренняя ошибка, но нет ничего в файле журнала. Я добавил Log::Info через мой код, и мне удалось обнаружить, что ошибка вызвана циклом, но я не могу понять, потому что у меня нет журнала для внутренней ошибки.

+0

Являются ли ваши массивы '$ cols' и' $ line' равного размера? Другими словами, есть один элемент в каждом, потому что '$ cols' имеет ровно один элемент. Моя ставка '$ line' имеет более одного элемента. Это вернет FALSE, если количество элементов для каждого массива не равно. –

+0

@JayBlanchard Вот что я предполагаю. Кроме того, я знаю, что цикл while может выполнять несколько итераций без каких-либо проблем. Тем не менее, я не могу точно исключить, что одна строка где-то может быть другого размера. – Wistar

+1

. Вы можете протестировать '$ line', прежде чем выполнять какое-либо объединение, а затем выплевывать отчет об исключениях для тех строк, содержащих более одного элемента. –

ответ

-1

Все работает хорошо, когда размер файла уменьшается. Следовательно, это, вероятно, ошибка тайм-аута исчерпания памяти/выполнения.

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