Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Прочитать конкретную строчку в файле...

Сообщения:  [1-8] 

 
 автор: tuder   (07.03.2007 в 11:13)   письмо автору
 
   для: KPETuH   (07.03.2007 в 09:13)
 

Странный человек. Я же только что расписал такую возможность.

Смотри сам.

Вот поиграй параметром в пределах от 1 до 26173
http://files.byte.nsk.su/test/string.php?n=21245

Вот сам файл размером 1.2Мб
http://files.byte.nsk.su/test/oleg.txt



<?php
$fp
=fopen("oleg.txt""r");
echo 
"Jump to $n<br>";
$part_time explode(' 'microtime());
$begin_time $part_time[1].substr($part_time[0],1);

fseek($fp$n*45SEEK_SET);
$s=fgets($fp);
echo 
$s;

$part_time explode(' 'microtime());
$end_time $part_time[1].substr($part_time[0],1);
$time=sprintf("%1.6f",$end_time $begin_time);
echo 
"<p>Seek: $time sec</p>";

fclose($fp);

echo 
"Cycle to $n<br>";
$fp=fopen("oleg.txt""r");
$part_time explode(' 'microtime());
$begin_time $part_time[1].substr($part_time[0],1);

for (
$i=0$i<=$n$i++) {
   
$s=fgets($fp);
}
echo 
$s;

$part_time explode(' 'microtime());
$end_time $part_time[1].substr($part_time[0],1);
$time=sprintf("%1.6f",$end_time $begin_time);
echo 
"<p>Seek: $time sec</p>";

fclose($fp);

?>

   
 
 автор: Trianon   (07.03.2007 в 10:41)   письмо автору
 
   для: Shorr Kan   (07.03.2007 в 07:42)
 

Создать индексный файл. С записями фиксированной длины, представляющий собой массив позиций исходного.

   
 
 автор: KPETuH   (07.03.2007 в 09:13)   письмо автору
 
   для: tuder   (07.03.2007 в 09:05)
 

ну насколько я вижу других возможностей нету или открывай полностью или перебор циклом

   
 
 автор: tuder   (07.03.2007 в 09:05)   письмо автору
 
   для: KPETuH   (07.03.2007 в 09:02)
 

> Просто бежать циклом по файлу уже невозможно... файл большеват.

А если строка ближе к концу файла?

Сразу написали, что не подходит вариант.

   
 
 автор: KPETuH   (07.03.2007 в 09:02)   письмо автору
 
   для: tuder   (07.03.2007 в 09:00)
 

ну так при нахождении нужной строки из цикла можно выйти...

   
 
 автор: tuder   (07.03.2007 в 09:00)   письмо автору
 
   для: Sl   (07.03.2007 в 07:49)
 

>
fgets()
читает по строкам

В цикле. :-\

Если файл оптимизировать под одинаковую длинну строк, то можно воспользоваться функциями fseek - установка позиции курсора в определённое место, затем fgets c указанием длинны строки. Будет считана строка с определённого места.

Зная длину строки можно рассчитать необходимую позицию для считывания.

   
 
 автор: Sl   (07.03.2007 в 07:49)   письмо автору
 
   для: Shorr Kan   (07.03.2007 в 07:42)
 

fgets()
читает по строкам

   
 
 автор: Shorr Kan   (07.03.2007 в 07:42)   письмо автору
 
 

Какие есть варианты для этого? Просто бежать циклом по файлу уже невозможно... файл большеват.
Взять все сразу в память тоже нельзя. По той же причине... memory_limit 512M не хватает...

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования