2011-12-02 9 views
10

ファイルの最後の文字を削除する少しのPHPスクリプトがあります。PHP - ファイルの最後の文字を削除する

$contents = file_get_contents($path); 
rtrim($contents); 
$contents = substr($contents, 0, -1); 
$fh = fopen($path, 'w') or die("can't open file"); 
fwrite($fh, $contents); 
fclose($fh);  

したがって、ファイルの内容を読み込み、最後の文字を切り取り、ファイルを切り捨てて文字列を書き戻します。 これはすべて正常に動作します。

私の心配は、このファイルに大量のデータが含まれている可能性があり、file_get_contents()呼び出しがこのデータをすべてメモリに保持している可能性があります。

ファイルから最後の文字を削除する効率的な方法はありますか?

おかげ

答えて

21

は、より多くのヘルプについては、この

$fh = fopen($path, 'r+') or die("can't open file"); 

$stat = fstat($fh); 
ftruncate($fh, $stat['size']-1); 
fclose($fh); 

を試してみてください0にファイルを切り捨てるように見えるthis

+0

を参照してください..? - おそらく、fopenがwを使っているからでしょうか?それをrに設定しても動作しないようですね? – sulman

+0

@sulman - – azat

+0

ありがとう非常にありがとうございます。今すぐ素晴らしい作品:) – sulman

関連する問題