|
|
|
| такой вопрос: когда открываешь дескриптор файла функцией fopen(), загружается ли всё содержимое этого файла в оперативную память? а при копировании copy() ? | |
|
|
|
|
|
|
|
для: вялый
(26.07.2008 в 18:07)
| | Нет, конечно. Да и с чего бы ему? | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2008 в 18:37)
| | а можно не открывая файл целиком, считать из него одну определенную строчку?))) например если файл очень большой, а открывать его надо при каждом вызове скрипта.
мускл и другие не интересуют, просто этот способ интересен, можно так или нет?) | |
|
|
|
|
|
|
|
для: noob
(26.07.2008 в 20:02)
| | Конкретную строчку без последовательного просмотра файла врятли удастся отыскать.
С помощью функции fseek можно перейти на любое смещение в открытом файле. | |
|
|
|
|
|
|
|
для: noob
(26.07.2008 в 20:02)
| | Да, для этого в цикле последовательно вызывают функцию fgets(), до тех пор, пока не доберетесь до нужной строки. В каждый момент времени скрипт у вас будет оперировать лишь одной строкой файла. | |
|
|
|
|
|
|
|
для: cheops
(27.07.2008 в 12:57)
| | Получается если мне понадобится последняя строчка, то нужно будет так и так весь файл загрузить?
А как нибудь из центра сразу можно взять строчку? На рандом. | |
|
|
|
|
|
|
|
для: noob
(27.07.2008 в 13:31)
| | смотря что за рандом. | |
|
|
|
|
|
|
|
для: Trianon
(27.07.2008 в 13:59)
| | ну есть большой большой файл *.txt, каждый раз грузить долго, а нужна всего лишь одна любая строчка из него. Как одну рандомную строчку загрузить? | |
|
|
|
|
|
|
|
для: noob
(27.07.2008 в 15:24)
| | Если нужна действительно любая строчка, то всё очень просто.
Нужно один раз вызвать fgets(). Первая строчка является любой (равно как и любая другая). | |
|
|
|
|
|
|
|
для: Trianon
(27.07.2008 в 15:27)
| | list.txt
первая строка
вторая строка
третья
...
еще миллион строк
...
последняя строка
|
<?
$file=fopen("list.txt", "r");
$str=fgets($file);
fclose($file);
echo $str;
?>
|
Всегда возвращает | |
|
|
|
|
|
|
|
для: noob
(27.07.2008 в 15:58)
| | > Всегда возвращает
> первая строка
Так и должно. | |
|
|
|
|
|
|
|
для: noob
(27.07.2008 в 15:58)
| | прям как на базаре.
Подходите к прилавку, обращаетесь к продавцу: - Дайте мне пачку масла. Любую.
Он берет первую со стопки и протягивает Вам.
Вы же начинаете препираться, что он из середины не выдернул.
Вы же хотели Быстро!
Быстро - из всех строк как раз и будет первая. Потому что лишь у первой строки в файле известна её позиция. До остальных позиций нужно дотянуться.
И Вы НИЧЕГО не сказали о том, что за "рандом". Хотя я, заметьте - спрашивал! | |
|
|
|
|
|
|
|
для: Trianon
(27.07.2008 в 16:32)
| | Вы знаете значение слова рандом? Это обратное постоянству. Когда с какой то вероятностью может быть несколько вариантов вывода. Когда результат может быть только 1, в чем тут рандом? Это полная определенность. | |
|
|
|
|
|
|
|
для: noob
(27.07.2008 в 18:03)
| | >Вы знаете значение слова рандом?
Я даже слова такого не знаю, не то что значения. | |
|
|
|
|
|
|
|
для: noob
(27.07.2008 в 18:03)
| | А Вы знаете значение слова "любой"? | |
|
|
|
|
|
|
|
для: BinLaden
(27.07.2008 в 19:01)
| | Тоже хотел сказать, но как то не хотелось раздувать дальше... :)
Любой это тоже значит любой, а не какой то определенный. Слово любой используют если не понятно, какой конкретно. Тут, опять же, может быть только 1, почему он это он вдруг любой... | |
|
|
|
|
|
|
|
для: вялый
(26.07.2008 в 18:07)
| | ещё вопрос: как из скопировать в файл содержимое дескриптора? я делаю загрузку картинок на сервер из других сайтов, т.е. нужно скопировать в файл содержимое этого:
$img=fopen("http://asdfasdfasdf.com/asdfadf.gif",r)
|
| |
|
|
|
|
|
|
|
для: вялый
(26.07.2008 в 20:39)
| | copy может это сделать.
curl-механизм тоже. | |
|
|
|
|
|
|
|
для: вялый
(26.07.2008 в 20:39)
| | fwrite | |
|
|
|