2016-12-23 2 views
0

次のPHPスクリプトがあります。私は、スクリプトを実行したときファイルがなくなると切り詰められるファイル

{"epochtime":1482524298,"date":"2016-12-23 20:18:18"} 

、私はそれに次のように見ることがexpdectingた:

{"epochtime":1482524540,"date":"2016-12-23 20:22:20"} 
{"epochtime":1482524298,"date":"2016-12-23 20:18:18"} 

代わりに、それだけでtime_stamp_file.txtがそれにfollwoingた

<?php 

create_time_stamp('time_stamp_file.txt'); 

function create_time_stamp($fname) 
{ 
    $fh = fopen($fname, 'c+'); 
    if (!$fh) { 
     die ('Could not open date stamp file'); 
    } 
    $time = time(); 
    $time_array = array(
     'epochtime' => $time, 
     'date' => date('Y-m-d H:i:s', $time) 
    ); 
    fwrite($fh, json_encode($time_array)."\r\n"); 
} 

単一の行を持っていた:

{"epochtime":1482524540,"date":"2016-12-23 20:22:20"} 

私はc +とは、ポインタをファイルの先頭に置き、切り捨てずに読み書き用に開くことを意味します。何か案は?

注:私はバッファにファイルを読み込み、最初にデータを追加してファイルに書き戻すことができますが、私の質問はc +フラグの使用に関するものでした。

+0

5.6で私のために同じものを追加するには 'a +'を使用して –

+0

と書いてもいいですか? http://php.net/manual/en/function.fopen.php –

+0

*「私はc +とは、ファイルの先頭にポインタを置くことを意味します」とは、ファイルに追加しないことを意味します。あなたはこれについて完全にマニュアルを読むべきです。 –

答えて

0

fread($ fh、filesize( 'time_stamp_file.txt'))を開いた後に(ファイルを一度読み込んで)書き込むと、期待通りに動作します。

関連する問題