PHP what is the best way to write data to middle of file without rewriting file

后端 未结 3 835
说谎
说谎 2020-11-29 10:31

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

3条回答
  •  眼角桃花
    2020-11-29 11:10

    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
    }
    

提交回复
热议问题