[PHP] считать строку из файла
За сцылку спасибо, сейчас будем посмотреть
4096 это не полмега.
я ж говорил, что разные значения пробовал...
Причина, как уже сказали, в избыточной длине строки. Можно вообще убрать этот 4096.
при разных значениях "4096" дает разные результаты. Куда смотреть?
Как грубый вариант - модифицировать как
$buffer = fgets($handle,4096);
if($buffer[strlen($buffer)-1]=="\n")
$i++;
главное, чтобы нужная строка длиннее не оказалась...
тогда уж fread
А ты уверен, что там все записи каждая на отдельной строке хранится?
если его убрать, по умолчанию он равен 1024. Этого явно мало.
э-э-э... ну вроде как дампы mysql так и делаются
в военное время значение косинуса может достигать 3?
а то и больше:)
я думаю, fread будет ощутимо тормознее...
Если бы ты вместо того, чтобы тупо копировать примеры, прочитал что такое fgets в php и что означают его аргументы, то не удивлялся бы тому, что происходит.
не всегда, есть опция -e
и в чем там фишка?
интернета нет?
с ней, я так понимаю, всё в одну строку пишется? Не, судя по просмотру, на разных
ты понимаешь неправильно
строка fgets ( ресурс дескриптор [, целое длина])вот не вижу я тут, с какого он должен заканчивать работу по достижении конца СТРОКИ и переходить на следующую... я сам уже давно понять не могу, почему этот пример работает:)
Возвращает строку размером в указанную длину - 1 байт, прочитанную из файла, на который указывает параметр дескриптор. Чтение из файла заканчивается, когда количество прочитанных байтов достигает длины - 1 или по достижении конца файла. Если длина не указывается, по умолчанию ее значение равно 1 килобайту или 1024 байтам.
В случае возникновения ошибки функция возвращает FALSE.
есть, головы нет... что бы переводить...
жаль... хотя это, конечно, не мое дело, а админов, но самому тоже приходится участвовать... и всё из-за того, что кто-то два года назад поленился лишний винт поставить....
вот не вижу я тут, с какого он должен заканчивать работу по достижении конца СТРОКИ и переходить на следующую... я сам уже давно понять не могу, почему этот пример работает:)Для устойчивости, чтобы с виду правильный код не падал от нехватки памяти. Поставь 1000000000, всё равно предельная память раньше кончится - хотя это, конечно, неправильный подход в общем случае.
именно так только что и сделал:) поставил мегабайт - пусть старается...
вот тут пишут:
string fgets ( resource handle [, int length] )чаго непонятно-то?
Возвращает строку размером в length - 1 байт, прочитанную из дескриптора файла, на который указывает параметр handle . Чтение заканчивается, когда количество прочитанных байтов достигает length - 1, по достижении конца строки (который включается в возвращаемое значение) или по достижении конца файла (что бы ни встретилось первым). Если длина не указана, по умолчанию ее значение равно 1 килобайту или 1024 байтам.
Оставить комментарий
uncle17
Требуется взять строку с номером таким-то...при разных значениях "4096" дает разные результаты. Куда смотреть?