Некорректно подсчитывается количество строк в файле

peon

Lok'tar ogar
PHP:
<?php

$handle = fopen("turn10-03-2014.log", "r");

if ($handle) {

    $count = 0;
    while (!feof($h)) {
        $line = fgets($h, 4096);
        $count++;
    }
    fclose($h);

    echo $count;

}
?>
В notepad++ количество строк 1974322
Этот код выводит 1976339

Что я делаю не так?
 

peon

Lok'tar ogar
Что за переменная $h ?
Откуда взялась в коде?
оно было повыше, неаккуратно привел пример
$h = fopen("Russia-Msk.txt", "r");
Пусть пример будет такой:
PHP:
<?php

$h = fopen("turn10-03-2014.log", "r");

if ($h) {

    $count = 0;
    while (!feof($h)) {
        $line = fgets($h, 4096);
        $count++;
    }
    fclose($h);

    echo $count;

}
?>
 

peon

Lok'tar ogar
Убрал 4096, теперь считает корректно. Так и не понял, как это влияло на количество строк?
 

keltanas

marty cats
Убрал 4096, теперь считает корректно. Так и не понял, как это влияло на количество строк?
Вот опять. Ну почему так трудно открыть документацию и прочитать, что
length
Чтение заканчивается по достижении length - 1 байт, если встретилась новая строка (которая включается в возвращаемый результат) или конец файла (что встретилось первым). Если длина не указана, чтение из потока будет продолжаться до тех пор, пока не достигнет конца строки.
 

peon

Lok'tar ogar
Вот опять. Ну почему так трудно открыть документацию и прочитать, что
Я читал ман вчера вечером и не верно понял смысл следующего предложения.
Чтение заканчивается по достижении length - 1 байт,
В моем понимание было, что функция вернет length - 1 байт каждой новой строки.
Конечно, позже на практичном опыте стало понятно, что каждую интерацию будет возвращена часть строки, указанного размера или оставшаяся часть строки до CR/LF или EOF, если она меньше указанного размера, к тому же эти спецсимволы в этом случае войдут в поток.
 

peon

Lok'tar ogar
чтож продолжим рукоблудство
всмысле? с точки зрения инструментов или приложения?
например, если в логике приложения требуется значение количества строк, то wc тут каким боком?
а если мне нужно узнать количество строк, я могу открыть файл в npp + pagedown, ничего страшного, такая потребность редко возникает.
 

stopkran

Дилетант
"и эти люди запрещают нам ковыряться в носу считают себя вправе критиковать Вурдалака!"
 
Сверху