Работа с большим файлом .csv на ходящемся на сервере
На сервере PHP есть довольно большой файл .csv (таблица) размером в 500 и более мегабайт. Нужен код PHP для считывания этого файла .csv и отправки клиенту javascript данных из файла примерно по 10 - 50 строк.
Работа с таким большим файлом .csv может быть вызовом из-за ограниченных ресурсов сервера и времени выполнения. Однако, можно использовать стратегию построчного чтения файла и пошаговой отправки данных на клиентскую сторону. Вот как это можно сделать:
$filename = 'путь_к_файлу.csv';
$file = fopen($filename, 'r');
// Пропустим первую строку (если она заголовок)
// Определим количество строк для отправки на клиентскую сторону за один запрос
// Считываем и отправляем строки на клиент по $linesPerRequest за раз
while (($line = fgetcsv($file)) !== false) {
for ($i = 0; $i < $linesPerRequest && $line !== false; $i++) {
echo json_encode($data); // Отправляем данные на клиент
sleep(1); // Небольшая пауза между запросами
Клиент js использует технологию async await fetch
Клиентская сторона (JavaScript):
const response = await fetch('путь_к_php_скрипту.php');
const data = await response.json();
if (data.length === 0) { break; }
allData = allData.concat(data);
if (allData.length >= start + batchSize) {
// Обработка полученных данных (allData.slice(start, start + batchSize))
// Например, добавление в таблицу, вывод на страницу и т.д.
Обратите внимание, что этот код предоставляет лишь общий план. Необходимо учесть, что обработка больших файлов может быть ресурсоёмкой задачей, и возможно потребуется оптимизация, такая как кэширование, разбиение файла на более мелкие части и т.д. Также обратите внимание, что этот код не обрабатывает ошибки и исключения, которые могут возникнуть в процессе выполнения.