尝试写入文件时重复输入

时间:2016-08-23 13:31:59

标签: php

我正在尝试创建一个日志文件,但该文件使用相同的字符串写入两次。我该怎么做才能避免这种行为?

     $file = 'newfile.txt';
     $current = file_get_contents($file);
     $current = time()."\n";
     file_put_contents($file, $current, FILE_APPEND | LOCK_EX);

    /* output
    1471958308
    1471958308
    1471958312
    1471958312
    1471958734
    1471958734
    */

2 个答案:

答案 0 :(得分:1)

因为您正在使用FILE_APPEND,它将添加到文件末尾$current中的任何内容,您只需执行此操作

<?php

$file = 'newfile.txt';
$current = time()."\n";
file_put_contents($file, $current, FILE_APPEND | LOCK_EX);

尽管使用您的代码,但我没有为此行重复数据

 $current = time()."\n";

将使用此语句覆盖您从文件中读取的任何内容

$current = file_get_contents($file);

反正

如果我在.=

中使用=而不是$current .= time()."\n";,那么我说你得到的重复的唯一方法就是
$file = 'newfile.txt';
$current = file_get_contents($file);
$current .= time()."\n";                   //<- not the .=
file_put_contents($file, $current, FILE_APPEND | LOCK_EX);

答案 1 :(得分:0)

我现在使用的脚本是:

$file = 'newfile.txt';
$current = time()."\n";
file_put_contents($file, $current, FILE_APPEND | LOCK_EX);

如果我在命令行中使用(lynx -dump http://dev.test/index.php)运行该文件,则运行浏览器(chrome)后的cod ...这是输出:

1472044823
1472044856
1472044856

总结当我通过chrome运行代码时......时间戳被添加两次......为什么?