Я новичок в 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);
}
Это внутри класса, где свойство "name" является путем к файлу.
Я записываю файл по 1000 байт за раз, потому что я получаю ошибки о превышении максимального объема памяти при тестировании с файлами размером более 30 МБ.