2017-01-04 2 views
0

Я использую datatables для отображения данных из файла CSV. Файл может иметь 60k строк. Все работы отлично от него, очевидно, занимает много времени (более 70 секунд) для отображения.Таблицы данных для больших файлов CSV

<?php 
$result = []; 
if (($handle = fopen("SO.csv?id=2", "r")) !== FALSE) { 
    while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $cols = array($row[0], $row[1], $row[2], $row[3]); 
     $reset = false; 
     echo '<tr><td>'.$row[0].' </td><td> '.$row[1].' </td><td> '.$row[2].' </td><td> '.$row[3].' </td></tr>'; 
    } 
} 
?> 

Очевидно стороне сервера была бы идеальным вариантом, но я не знаю, как я бы включить его во время чтения из CSV.

Любые предложения? Любые другие инструменты/скрипты?

+0

Просто сохраните свой вывод эха в файл html .. и затем сразу же откройте его. –

+0

Сделал это, но даже с 60k строками, он медленный – pee2pee

+0

Это хорошо для просмотра одной страницы ... если вы хотите показать все, что вам нужно использовать более продвинутый механизм ... Например, вы можете разделить данные на страницы ... отправить первую страницу, а затем отправить остальные асинхронно с помощью ajax с клиентской стороны .... Или просто использовать фреймворк с базой данных sql, например wordpress .. –

ответ

1

Попробуйте написать PHP-скрипт, который возвращает CSV-данные, а затем загружать такие данные через ajax option в datatables. Затем вы можете разбивать страницы на страницы и использовать параметр deferRender, который заставляет Datatables создавать узлы HTML только при необходимости (т. Е. При смене страниц).

Это должно немного ускорить первоначальную загрузку.

+0

Помимо преобразования CSV-файла в базу данных и использования режима обработки на стороне сервера, использование опции deferRender с параметрами 'ajax' или' data' является лучшей альтернативой. –

Смежные вопросы