Загрузить текстовый файл в память

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

Raccoon

Участник
Регистрация
31 Июл 2007
Сообщения
176
Реакции
9
Добрый день!

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

Спасибо.
 
  • Заблокирован
  • #2
PHP:
$strok=file("links.txt");
Загоняет строки файла в массив. Для последующего извлечения делай так:
PHP:
foreach($strok as $str){
   echo '<tr><td>'.$str.'</td></tr>';	
}
 
Ну а где работа с памятью-то?
Если у тебя file.txt хотя бы 5Mb будет, сколько времени будет тратится каждый раз на загрузку и поиск в нем?
 
  • Заблокирован
  • #4
:nezn: ну переменная в памяти хранится...
Один раз загружаешь файл в переменную и в последующем файл не открываешь.
 
Сборщик мусора РНР врядли пойдет на такое. После завершения работы скрипта открытые дескрипторы файлов будут закрыты по-любому.
 
Вообще многое зависит от размера файла. Если файл большой (больше мега) то вообще про PHP забудь, смотри в сторону более шустрого кода. Если файлик довольно велик - не пользуйся регулярками до тех пор, пока без них уже не удасться ничего выудить. Пока можешь используй strpos() + substr(). Я файлы в несколько мегабайт парсил на ассемблере. А вообще файл в памяти висит, пока работает повесивший его туда процесс. Следовательно он исчезнет оттуда с завершением работы PHP сценария. Можешь написать конечно службу/демона чтобы та висела постоянно, только какой хостер тебе позволит ее поставить (если тока на VDS или дедик). Да и смысл чтобы он там висел вечно?
 
  • Заблокирован
  • #7
Ну а я на пхп на дедике разрезал фильмы и заливал на другой сервер :)
 
кажется нашел, shmop_open, только не пойму пока как её включить на сервере
 
Это нужно чтоб пхп был скомпилирован с опцией --enable-shmop, но не очень верится, что на обычном хостинге сделают такое.
 
PHP:
$txt=file_get_contents($put_do_fila);

Весь файл в памяти в переменной $txt.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху