Люди добрые помогите решить проблему. Через библиотеку чтения 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мб.
подскажите, как правильно заменить значение ключа на метку времени создания файла для сортировки?
OpenServer не запускается, пару минут назад работал, а сейчас нетВот лог Файл C:\Windows\system32\drivers\etc\hosts недоступен для записи