2016-08-23 3 views
0

ログファイルを作成しようとしていますが、同じ文字列を使用してファイルが2回書き込まれています。この現象を回避するにはどうすればよいですか?あなたのコードでそれのように私のためにデータを複製しませんでしたが、あなたはこのファイルを書き込もうとすると重複する入力

<?php 

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

を行うことができます$currentにあるものは何でも、ファイルの末尾に追加されますFILE_APPENDを、使用しているため

 $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 
    */ 
+1

Webからこのファイルを実行しますか?コンソールから実行してみてください。 –

+0

コードはどのようにトリガーされますか? –

+0

代わりにerror_log()関数を試してください –

答えて

1

あなたはこの文

とファイルから読み取るどんな

$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); 
+0

これはタイムスタンプを倍増させるのにどのように役立ちますか? –

+0

まあ、私は彼が使用していた実際のコードを公開していません – RiggsFolly

+0

これは達成することができるいくつかのサーバー設定で。 –

0

=私が今使っているスクリプトの.=を使用する場合は、あなたが取得していると言う重複があり得ることができる唯一の方法次のとおりです。

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

私が使用して、コマンドライン経由でファイルを実行した場合(オオヤマネコ-dumpこの後の3210)が...これが出力されます)ブラウザ(クロームを介したタラを実行します。

結論で
1472044823 
1472044856 
1472044856 

私はクロームを介したコードを実行する...タイムスタンプが二回追加された...なぜ?

関連する問題