PHP, каков наилучший способ записи данных в середину файла без перезаписи файла

Я работаю с большими текстовыми файлами в php (1GB +), я использую

file_get_contents("file.txt", NULL, NULL, 100000000,100); 

Чтобы получить данные из середины файла, но если бы я хотел изменить данные в файле на что-то другое, чем исходные данные, мне пришлось бы переписать весь файл.

Как я могу изменить данные в файле (переменной длины) без перезаписи данных, если данные больше оригинала? Я храню индекс различных блоков данных в файле и их местоположение в байтах. Кажется, что единственная альтернатива состоит в том, чтобы выделить х количество байтов для каждого фрагмента данных, а затем переписать этот блок, если бы я хотел изменить его ... проблема в том, что он занял бы намного больше места, чем нужно, всего за нулевые байты, и это заняло бы больше времени, чтобы написать ... и это все равно не решит, какУдалить" данные, так как файл никогда не уменьшится в размере ... Мне действительно нужна помощь здесь ...

Если бы я использовал префиксные блоки для каждого фрагмента данных в файле, например, 1 МБ, то я хотел бы ввести данные, которые были только100kb, эта запись заняла бы 10-кратное количество фактически необходимого пространства, и запись никогда не могла бы быть заменена чем-то большим, чем 1 МБ данных, поскольку она перезаписывала бы более 1-го выделенного блока ... удаление было бы невозможно ... надеюсь, что это смысл ... я не ищу альтернативы, я ищу записи и изменения данных в середине файлов, хе-хе ...

ОБНОВЛЕНИЕ: Да, я хотел бы заменить старые данные, но если новые данные расширяются больше, чем старые, я бы хотел, чтобы остальные данные были перенесены дальше в файл ...

учтите это: 0000000HELLODATA00000000 нули представляют пустое пространство, ничего ... теперь я хотел бы заменить HELLO на НЕЧТО, теперь, поскольку что-то больше, чем hello, просто запись в начальной точке hello расширится до hello и начнет перезаписывать данные .. Поэтому я хотел бы, чтобы данные помещались дальше в файл, чтобы освободить место для чего-то, не перезаписывая данные ... хе-хе

Ответы на вопрос(3)

Ваш ответ на вопрос