Люди добрые помогите решить проблему. Через библиотеку чтения Excel файлов считываю большой файл и память на сервере сжирает данный скрипт,как освобождать память при каждом цикле ? Ну или как решить по другому ???
$excel = PHPExcel_IOFactory::load('test.csv');
Foreach($excel ->getWorksheetIterator() as $worksheet) {
$lists[] = $worksheet->toArray();
}
foreach($lists as $list){
echo '<table border="1">';
// Перебор строк
foreach($list as $row){
echo '<tr>';
// Перебор столбцов
foreach($row as $col){
echo '<td>'.$col.'</td>';
}
echo '</tr>';
}
echo '</table>';
}
Для обработки больших файлов (больше чем доступная память) нужно эти файлы не целиком считывать, а обрабатывать построчно:
if (($handle = fopen("test.csv", "r")) !== FALSE) {
echo "<table>";
while (($data = fgetcsv($handle, 1024, ",")) !== FALSE) {
$num = count($data);
echo "<tr>";
for ($c=0; $c < $num; $c++) {
echo "<td>" . $data[$c] . "</td>";
}
echo "</tr>";
}
echo "</table>";
fclose($handle);
}
Более подробно смотрите на http://php.net/manual/ru/function.fgetcsv.php
$lines = file('test.csv'); //Читает содержимое файла и помещает его в массив
echo '<table border="1">';
foreach($lines as $line){
$list = explode(";", $line); //Разбивает строку с помощью разделителя
foreach($list as $row){
echo '<tr>';
// Перебор столбцов
foreach($row as $col){
echo '<td>'.$col.'</td>';
}
echo '</tr>';
}
}
echo '</table>';
Такой код более читабельный. Подобное я использовал на csv файлах размером более 20мб.
Виртуальный выделенный сервер (VDS) становится отличным выбором
подскажите, как правильно заменить значение ключа на метку времени создания файла для сортировки?
OpenServer не запускается, пару минут назад работал, а сейчас нетВот лог Файл C:\Windows\system32\drivers\etc\hosts недоступен для записи