Задать вопрос
@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 и в этом файле есть пустые строки
Я не знаю чем можно заменить эту функцию так как раньше мы прогоняли весь файл, считали количество строк НО это очень долго особенно когда в файле несколько миллионов записей
Пришлось отказаться от этой идеи

Чем можно заменить эту функцию?
  • Вопрос задан
  • 130 просмотров
Подписаться Средний 3 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽