I am working with large text files in php (1GB+), I am using
file_get_contents(\"file.txt\", NULL, NULL, 100000000,100);
To get data from
To Overwrite Data :
$fp = fopen("file.txt", "rw+");
fseek($fp, 100000000); // move to the position
fwrite($fp, $string, 100); // Overwrite the data in this position
fclose($fp);
To Inject Data
This is a tricky because you have to rewrite the file. It can be optimized with partial modificationfrom point of injection rather than the whole file
$string = "###INJECT THIS DATA ##### \n";
injectData("file.txt", $string, 100000000);
Function Used
function injectData($file, $data, $position) {
$fpFile = fopen($file, "rw+");
$fpTemp = fopen('php://temp', "rw+");
$len = stream_copy_to_stream($fpFile, $fpTemp); // make a copy
fseek($fpFile, $position); // move to the position
fseek($fpTemp, $position); // move to the position
fwrite($fpFile, $data); // Add the data
stream_copy_to_stream($fpTemp, $fpFile); // @Jack
fclose($fpFile); // close file
fclose($fpTemp); // close tmp
}