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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: дескрипторы
 
 автор: вялый   (26.07.2008 в 18:07)   письмо автору
 
 

такой вопрос: когда открываешь дескриптор файла функцией fopen(), загружается ли всё содержимое этого файла в оперативную память? а при копировании copy() ?

  Ответить  
 
 автор: Trianon   (26.07.2008 в 18:37)   письмо автору
 
   для: вялый   (26.07.2008 в 18:07)
 

Нет, конечно. Да и с чего бы ему?

  Ответить  
 
 автор: noob   (26.07.2008 в 20:02)   письмо автору
 
   для: Trianon   (26.07.2008 в 18:37)
 

а можно не открывая файл целиком, считать из него одну определенную строчку?))) например если файл очень большой, а открывать его надо при каждом вызове скрипта.

мускл и другие не интересуют, просто этот способ интересен, можно так или нет?)

  Ответить  
 
 автор: sms-send   (26.07.2008 в 20:28)   письмо автору
 
   для: noob   (26.07.2008 в 20:02)
 

Конкретную строчку без последовательного просмотра файла врятли удастся отыскать.

С помощью функции fseek можно перейти на любое смещение в открытом файле.

  Ответить  
 
 автор: cheops   (27.07.2008 в 12:57)   письмо автору
 
   для: noob   (26.07.2008 в 20:02)
 

Да, для этого в цикле последовательно вызывают функцию fgets(), до тех пор, пока не доберетесь до нужной строки. В каждый момент времени скрипт у вас будет оперировать лишь одной строкой файла.

  Ответить  
 
 автор: noob   (27.07.2008 в 13:31)   письмо автору
 
   для: cheops   (27.07.2008 в 12:57)
 

Получается если мне понадобится последняя строчка, то нужно будет так и так весь файл загрузить?
А как нибудь из центра сразу можно взять строчку? На рандом.

  Ответить  
 
 автор: Trianon   (27.07.2008 в 13:59)   письмо автору
 
   для: noob   (27.07.2008 в 13:31)
 

смотря что за рандом.

  Ответить  
 
 автор: noob   (27.07.2008 в 15:24)   письмо автору
 
   для: Trianon   (27.07.2008 в 13:59)
 

ну есть большой большой файл *.txt, каждый раз грузить долго, а нужна всего лишь одна любая строчка из него. Как одну рандомную строчку загрузить?

  Ответить  
 
 автор: Trianon   (27.07.2008 в 15:27)   письмо автору
 
   для: noob   (27.07.2008 в 15:24)
 

Если нужна действительно любая строчка, то всё очень просто.
Нужно один раз вызвать fgets(). Первая строчка является любой (равно как и любая другая).

  Ответить  
 
 автор: noob   (27.07.2008 в 15:58)   письмо автору
 
   для: Trianon   (27.07.2008 в 15:27)
 

list.txt
первая строка
вторая строка
третья
...
еще миллион строк
...
последняя строка


<?
$file
=fopen("list.txt""r");
$str=fgets($file);
fclose($file);
echo 
$str;
?>


Всегда возвращает
первая строка

  Ответить  
 
 автор: BinLaden   (27.07.2008 в 16:15)   письмо автору
 
   для: noob   (27.07.2008 в 15:58)
 

> Всегда возвращает
> первая строка

Так и должно.

  Ответить  
 
 автор: Trianon   (27.07.2008 в 16:32)   письмо автору
 
   для: noob   (27.07.2008 в 15:58)
 

прям как на базаре.
Подходите к прилавку, обращаетесь к продавцу: - Дайте мне пачку масла. Любую.
Он берет первую со стопки и протягивает Вам.
Вы же начинаете препираться, что он из середины не выдернул.

Вы же хотели Быстро!
Быстро - из всех строк как раз и будет первая. Потому что лишь у первой строки в файле известна её позиция. До остальных позиций нужно дотянуться.

И Вы НИЧЕГО не сказали о том, что за "рандом". Хотя я, заметьте - спрашивал!

  Ответить  
 
 автор: noob   (27.07.2008 в 18:03)   письмо автору
 
   для: Trianon   (27.07.2008 в 16:32)
 

Вы знаете значение слова рандом? Это обратное постоянству. Когда с какой то вероятностью может быть несколько вариантов вывода. Когда результат может быть только 1, в чем тут рандом? Это полная определенность.

  Ответить  
 
 автор: Trianon   (27.07.2008 в 18:19)   письмо автору
 
   для: noob   (27.07.2008 в 18:03)
 

>Вы знаете значение слова рандом?

Я даже слова такого не знаю, не то что значения.

  Ответить  
 
 автор: BinLaden   (27.07.2008 в 19:01)   письмо автору
 
   для: noob   (27.07.2008 в 18:03)
 

А Вы знаете значение слова "любой"?

  Ответить  
 
 автор: pav1uxa   (27.07.2008 в 19:10)   письмо автору
 
   для: BinLaden   (27.07.2008 в 19:01)
 

Тоже хотел сказать, но как то не хотелось раздувать дальше... :)

Любой это тоже значит любой, а не какой то определенный. Слово любой используют если не понятно, какой конкретно. Тут, опять же, может быть только 1, почему он это он вдруг любой...

  Ответить  
 
 автор: вялый   (26.07.2008 в 20:39)   письмо автору
 
   для: вялый   (26.07.2008 в 18:07)
 

ещё вопрос: как из скопировать в файл содержимое дескриптора? я делаю загрузку картинок на сервер из других сайтов, т.е. нужно скопировать в файл содержимое этого:
$img=fopen("http://asdfasdfasdf.com/asdfadf.gif",r)

  Ответить  
 
 автор: Trianon   (26.07.2008 в 21:48)   письмо автору
 
   для: вялый   (26.07.2008 в 20:39)
 

copy может это сделать.
curl-механизм тоже.

  Ответить  
 
 автор: Киналь   (27.07.2008 в 13:32)   письмо автору
 
   для: вялый   (26.07.2008 в 20:39)
 

fwrite

  Ответить  
Rambler's Top100
вверх

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