私はPHPの初心者ですが、私はまだ適切なファイル処理テクニックを試しています。私は通常試行錯誤しても問題ありませんが、データの削除や変更については、常に安全な側にいることが大好きです。PHPでファイルセクションを削除しますか?
ファイルの特定のセクションを削除するために以下のコードを書いていますが、コードが大容量のファイルや予期しない条件で動作するかどうかはわかりません。
私はちょうど今、これをテストし、それが仕事をしましたが、私は最初、より経験を積んだプログラマがそれを実行したいと思います:
function deletesection($start,$len){
$pos=0;
$tmpname=$this->name."tmp.tmp";
$tmpf=fopen($tmpname,"wb+");
rewind($tmpf);
$h=fopen($this->name,"rb");
rewind($h);
while(!feof($h)){
$this->xseek($h,$pos);
$endpos = $pos+1000;
if($endpos>$start && $pos<$start+$len){
$readlen=$start-$pos;
$nextpos=$start+$len;
}
else{
$readlen=1000;
$nextpos=$pos+1000;
}
fwrite($tmpf,fread($h,$readlen));
$pos=$nextpos;
}
fclose($h);
unlink($this->name);
rename($tmpname,$this->name);
}
これは、プロパティ「名前」はファイルパスでクラス内にあります。
30MBを超えるファイルでテストしたときに最大限のメモリを超えてしまうというエラーが発生したため、一度に1000バイトを書きます。
これは、[新しいコードレビューのベータサイト](http://codereview.stackexchange.com/)の方が良いかもしれません。それは一見するとうまく見えます。おそらくちょっと回り道。それが何をしているのか*理由*を説明するコメントを各セクションに追加することを検討してください。さらに読みやすさを考慮して、等号のまわりやコンマの右にスペースを追加することを検討してください。 – Charles