title: PHP what is the best way to write data to middle of file without rewriting file
body: <p>I am working with large text files in php (1GB+), I am using </p>
  
  <pre><code>file_get_contents("file.txt", NULL, NULL, 100000000,100); 
  </code></pre>
  
  <p>To get data from the middle of the file, but if i wanted to change the data in the file to something that is of different change than the origional data, I would have to re-write the entire file.</p>
  
  <p>How can I change data within the file (variable length) without overwriting data if the data is larger than the original?  I keep an index of the different data blocks within the file and their byte location. It seems that the only alternative is to dedicate x amount of bytes to each piece of data and then rewrite that block if i wanted to change it... the problem with this is that it would take up a lot more space than needed in just null bytes, and it would take longer to write... and that still would not solve how to "remove" data, as the file could never shrink in size...  I really need some help here...</p>
  
  <p>If I used prefixed blocks for each piece of data in the file, like 1 mb, then I wanted to enter data that was only <code>100kb</code>, that entry would take 10x actual needed space, and the entry could never be changed to something more than 1mb of data, as it would overwrite more than 1st dedicated block...  removing it would not be possible... hope this makes any sense...  I am not looking for alternatives, I am looking to write and change data in the middle of files, hehe...</p>
  
  <p>UPDATE: Yes, I would like to replace the old data, but if the new data extends more than the old data I would want the rest of the data to be pushed further into the file...</p>
  
  <p>consider this: 0000000HELLODATA00000000
  the zeros represent empty space, nothing... now I would like to replace HELLO with SOMETHING, now since  something is larger than hello, simply writing in the starting point of hello would extend byond hello and start overwriting data... therefore i would like DATA to be pushed futher into the file, to make room for SOMETHING without overwriting DATA... hehe</p>