Помогите с чтением из файла с произвольного места произкольного кол-ва строк

Discussion in 'PHP' started by ttt0z, 6 Jan 2013.

  1. ttt0z

    ttt0z Member

    Joined:
    18 Nov 2007
    Messages:
    60
    Likes Received:
    10
    Reputations:
    -5
    у меня код читает файл в массив потом вызывает

    array_slice($file, $i*$potokov_za_raz, $potokov_za_raz)

    то есть берет с заданного места в файле заданное количество строк!!
    Это работает если файл маленький. если файл большой он не загружается в память, ка переписать этот код что бы можно было работать с файлом в 100мб ??? я думаю как то заменить на
    file_get_contents('file.txt', NULL, NULL, ((1*$n)-1), (11*$n));

    Помогите пожалуйста!
     
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Погугли по теме класса итератора, он позволяет не расходуя память (не забивая весь файл в память) получать нужные элементы.

    http://php.net/manual/ru/language.oop5.iterations.php
    http://php.net/manual/ru/spl.iterators.php

    И насколько я знаю file_get_contents это потоковая (steam) функция http://php.net/manual/ru/book.stream.php - в win системе они открываются как MemoryMap - тобишь загружаются в память не целиком, а выделенными блоками - что позволяет быстро работать с гигабайтными файлами проецируя в память лишь их часть, необходимую для работы.
     
    _________________________