附加到文本文件重复内容

时间:2018-07-30 08:35:03

标签: php file

在Windows 10 php 7.0.29上工作

如果我运行此代码段以编写新的文本文件

$myfile = fopen("/tmp/newfile.txt", "w") or die("Unable to open file!");
$txt = "John Doe".PHP_EOL;
fwrite($myfile, $txt);
$txt = "Jane Doe".PHP_EOL;
fwrite($myfile, $txt);
fclose($myfile);
die(__FILE__);

每件事都可以

文件内容

John Doe

简Doe

但是如果我再次在附加模式下对新文件运行

$myfile = fopen("/tmp/newfile.txt", "a") or die("Unable to open file!");
$txt = "John Doe".PHP_EOL;
fwrite($myfile, $txt);
$txt = "Jane Doe".PHP_EOL;
fwrite($myfile, $txt);
fclose($myfile);
die(__FILE__);

文件内容重复

约翰·杜 简·多伊 约翰·杜 简·多伊 约翰·杜(John Doe)

简Doe

我对所有我可以成像但不能附加到文件的测试进行识别

有什么建议吗? 谢谢

更新

如果我从shell运行相同的代码片段就可以了

2 个答案:

答案 0 :(得分:0)

我通常建议使用file_get_contents和file_put_contents,因为您将数据作为字符串提取并替换了全部内容。
这样,您可以使用内容字符串进行调试,并且所有“旧”数据都将被相同的+新数据覆盖。

void MatToTexture(Mat sourceMat) 
{
    //Get the height and width of the Mat 
    int imgHeight = sourceMat.Height;
    int imgWidth = sourceMat.Width;

    byte[] matData = new byte[imgHeight * imgWidth];

    //Get the byte array and store in matData
    sourceMat.GetArray(0, 0, matData);
    //Create the Color array that will hold the pixels 
    Color32[] c = new Color32[imgHeight * imgWidth];

    //Get the pixel data from parallel loop
    Parallel.For(0, imgHeight, i => {
        for (var j = 0; j < imgWidth; j++) {
            byte vec = matData[j + i * imgWidth];
            var color32 = new Color32 {
                r = vec,
                g = vec,
                b = vec,
                a = 0
            };
            c[j + i * imgWidth] = color32;
        }
    });

    //Create Texture from the result
    Texture2D tex = new Texture2D(imgWidth, imgHeight, TextureFormat.RGBA32, true, true);
    tex.SetPixels32(c);
    tex.Apply();
}

答案 1 :(得分:0)

谢谢大家的支持 这是一个htaccess问题,index.php被调用了2次,因此日志中的行重复了

@Andreas现在正在使用“追加”,因此与重写整个文件相比,所需的工作更少。 无论如何,谢谢您的建议将对其他情况有用