Как прочитать файл с конца?

Статус
В этой теме нельзя размещать новые ответы.

artcosmic

Постоялец
Регистрация
16 Сен 2008
Сообщения
198
Реакции
162
В файле есть строки, например
Строка 1
Строка 2
Строка 3
Строка 4
Строка 5
Нужно вывести на страницу строки наоборот
Строка 5
Строка 4
Строка 3
Строка 2
Строка 1
Вроде бы должно быть нетрудно, но не могу никак разобраться... Помогите, пожалуйста.
 
Читай файл в массив по строкам функцией file, затем пробегай массив убывающим счетчиком от начиная от максимального значения, выводя каждую строку.
 
PHP:
<?php 
$a=file('sokr.txt');
if(preg_match('{\Z.+\z}s', $a[count($a)-1])) 
    echo $a[count($a)-1];
  else
    echo $a[count($a)-1]."\n";	
for($i=count($a)-2; 0<=$i; $i--) {
    echo $a[$i];
}
?>
 
если файл большой, он просто заполнит всю память и скрипт не отработает. Вот решение, которое реально читает файл с конца (через fseek:(

 
55 минут? Да ну вряд ли. максимум памяти по дефолту = 8 метров. Оперативка щас у всех на 2 порядка больше минимум. А вот что там делает скрипт помимо чтения - неизвестно. Попробуй просто разверни файл и читай его потом с начала без выкрутасов.
 
1- если нужно всегда чиать с начала то и пиши в начало фаила а не в конец
2- попробуй перечитай фаил в другой в нужном порядке
3-55 минут... у меня фаил 90 мег расколбасил на 70 000 новостей, за 28 сек
но это было еще на старом движке, но новом нагрузка меньше... да и дакой фаил созать просто не реальо теперь тк 1 запись всего 100 символов
так что читай фаил в масив и потом реверс

$db_array=file('file.txt');
array_shift($db_array); //дубликаты режем если нужно
$db_array=array_reverse($db_array);
//вывод
foreach($db_array as $key=>$msg:(
echo "<div id='".$key."'>".$msg."</div>";
endforeach;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху