Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вывод файла начиная с последней строки
Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2017
Помог: 0 раз(а)
Спасибо, но не работает страница не открывается.
Строитель
Отправлено: 15 Июня, 2017 - 17:18:37
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Clover7, а вам принципиально использовать построчное чтение файла? Или можно считать файл целиком? Файл не большой?
Clover7
Отправлено: 15 Июня, 2017 - 18:37:05
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2017
Помог: 0 раз(а)
В файле записан лог посещения сайта, один пользователь- одна строка, поэтому обязательно, размер файла небольшой до 200кб, видите мне нужно вывести это посредством smarty, который тоже наверное накладывает свои правила на синтаксис.
Мне нужно вывести файл на экран, начиная с последней строки, то есть в обратном порядке, а как он будет считываться по большому счету не важно.
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Clover7, ок - позже зайду с ПК, напишу пример на пхп.
Vladimir Kheifets
Отправлено: 15 Июня, 2017 - 19:39:17
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
Clover7 пишет:
Спасибо, но не работает страница не открывается.
Нужно прежде всего понять прочитались ли данные в массив $buf
и что получилось после array_reverse($buf).
Для этого нужно распечатать $buf и переменную $v:
Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2017
Помог: 0 раз(а)
Vladimir Kheifets Прошу прощения видимо я был невнимателен, первый вариант который вы дали, все таки работает и выводит список начиная с последних посетителей сайта, то есть начиная с последней строки файла , скажите такая операция не будет постепенно загружать память сервера (ограничение на файл в 500 строк) и можно ли как нибудь в этом скрипте запретить доступ к файлу из браузера ? Я оставил вот такой вариант:
PS: Вроде бы не рекомендуется использовать чтение "задом наперёд".
Clover7
Отправлено: 16 Июня, 2017 - 02:27:35
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2017
Помог: 0 раз(а)
Строитель большое спасибо, это тоже работает но с небольшим изменением, я не могу использовать никакие echo в коде, так как это выводит данные вверху экрана, а не на странице шаблона (smarty), вот так работает:
Что значит число 256, это максимальное количество строк или что-то другое ? Тут огромное количество кода по сравнению с прошлым вариантом, что делает этот скрипт, я так понимаю он уже не считывает файл целиком в память, а ищет последнюю строку и что дальше ?
То что вы написали в P.S , это касается первого варианта или и второго тоже, ну и интересно узнать почему не рекомендуется, посоветуйте пожалуйста какой вариант мне в итоге лучше использовать ?
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Clover7 пишет:
Что значит число 256
Если не ошибаюсь, это количество байт, которые будут прочитаны за одну итерацию.
Clover7 пишет:
что делает этот скрипт
Читает файл построчно в обратном порядке, т.е., начиная с последней строки, и заканчивая первой.
Clover7 пишет:
То что вы написали в P.S , это касается первого варианта или и второго тоже, ну и интересно узнать почему не рекомендуется, посоветуйте пожалуйста какой вариант мне в итоге лучше использовать ?
Это касается второго варианта, где чтение файла идёт в цикле с конца. Почему? - честно говоря, я не вникал, там что-то связано со внутренней буферизацией. Ну а что использовать лучше? - лучше продумать алгоритм, при котором вам не понадобится чтение в обратном порядке.
Clover7
Отправлено: 16 Июня, 2017 - 10:47:28
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2017
Помог: 0 раз(а)
То есть в моем случае лучше считывать файл в массив как предложил Vladimir Kheifets, скажите в этом случае файл пишется в память один раз, а потом перезаписывается, так как изменяется содержимое я правильно понимаю то есть в памяти находится всего один файл state или нет ?
А где вы нашли второй вариант, можно ссылку на него ?
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Clover7 в массив читать большой файл не вариант, т.к однажды если файл вырастет в объеме, то не хватит памяти. Ссылку позже скину, когда буду за ПК.
Clover7
Отправлено: 16 Июня, 2017 - 18:32:25
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2017
Помог: 0 раз(а)
Строитель, спасибо, мой файл статистики будет записывать только последние 200 посещений сайта и его обьем не будет превышать 100кб. Скажите а как то можно сделать что-бы файл при открытии страницы загружался в массив выводился на экран и автоматически после показа, удалялся из памяти ?
Строитель
Отправлено: 16 Июня, 2017 - 18:44:49
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Clover7 пишет:
Строитель, спасибо, мой файл статистики будет записывать только последние 200 посещений сайта и его обьем не будет превышать 100кб. Скажите а как то можно сделать что-бы файл при открытии страницы загружался в массив выводился на экран и автоматически после показа, удалялся из памяти ?
По окончании работы скрипта переменные из памяти удаляются автоматически.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.