@stasboiko

Почему функция exec() в php при получении количества строк в файле не всегда возвращает правильный результат?

есть код который работает много лет без проблем и нареканий:
$countRows = intval(exec("/usr/bin/wc -l fileName.csv"));

этот код возвращает количесто абсолютно всех строк в файле (даже если есть пустые строки между строк с данными)
Сегодня я загрузил файл с MAC в котором есть 60 записей
Эти записи идут через одну (то есть первая строка с данными, а вторая пустая)
То есть 30 строк с данными и 30 пустых строк

$countRows в данном случае равно 30 (файл сохранен через MAC)
Я изменил одно значение в файле (удалил/заменил это не имеет значения) и сохранил в Linux и в данном случае получил значение $countRows равное 60
Также я сделал тоже самое на виндовс и получил 60
Формат файла не менялся
Эта функция уже 8 лет работает на сайте и в первый раз она вернула значение равное не всему количеству строк в файле (а только реальных записей/пустые строки не посчитала)

Эта ошибка (не правильный подсчет количества строк в файле) возникает только когда файл сохранен с MAC и в этом файле есть пустые строки
Я не знаю чем можно заменить эту функцию так как раньше мы прогоняли весь файл, считали количество строк НО это очень долго особенно когда в файле несколько миллионов записей
Пришлось отказаться от этой идеи

Чем можно заменить эту функцию?
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы