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

Тема в разделе "PHP", создана пользователем Raccoon, 2 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    175
    Симпатии:
    9
    Добрый день!

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

    Спасибо.
     
  2. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    PHP:
    $strok=file("links.txt");
    Загоняет строки файла в массив. Для последующего извлечения делай так:
    PHP:
    foreach($strok as $str){
       echo 
    '<tr><td>'.$str.'</td></tr>';    
    }
     
  3. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    175
    Симпатии:
    9
    Ну а где работа с памятью-то?
    Если у тебя file.txt хотя бы 5Mb будет, сколько времени будет тратится каждый раз на загрузку и поиск в нем?
     
  4. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    :nezn: ну переменная в памяти хранится...
    Один раз загружаешь файл в переменную и в последующем файл не открываешь.
     
  5. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Сборщик мусора РНР врядли пойдет на такое. После завершения работы скрипта открытые дескрипторы файлов будут закрыты по-любому.
     
  6. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    Вообще многое зависит от размера файла. Если файл большой (больше мега) то вообще про PHP забудь, смотри в сторону более шустрого кода. Если файлик довольно велик - не пользуйся регулярками до тех пор, пока без них уже не удасться ничего выудить. Пока можешь используй strpos() + substr(). Я файлы в несколько мегабайт парсил на ассемблере. А вообще файл в памяти висит, пока работает повесивший его туда процесс. Следовательно он исчезнет оттуда с завершением работы PHP сценария. Можешь написать конечно службу/демона чтобы та висела постоянно, только какой хостер тебе позволит ее поставить (если тока на VDS или дедик). Да и смысл чтобы он там висел вечно?
     
  7. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    Ну а я на пхп на дедике разрезал фильмы и заливал на другой сервер :)
     
  8. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    175
    Симпатии:
    9
    кажется нашел, shmop_open, только не пойму пока как её включить на сервере
     
  9. onemorestupidman

    onemorestupidman Писатель

    Регистр.:
    10 сен 2009
    Сообщения:
    7
    Симпатии:
    2
    Это нужно чтоб пхп был скомпилирован с опцией --enable-shmop, но не очень верится, что на обычном хостинге сделают такое.
     
  10. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    996
    Симпатии:
    268
    PHP:
    $txt=file_get_contents($put_do_fila);
    Весь файл в памяти в переменной $txt.
     
Статус темы:
Закрыта.