alan4ick
Guest
определение размера не доотданного файла, выгрузка файлов
Нужно узнать , какой размер от файла был передан клиенту, если клиент оборвал передачу.
Можно использовать : readfile , fread или fpassthru
Также стоит ignore_user_abort(true)
readfile и fpassthru являются предпочтительными, так как не нагружают apache , но так как нужно сделать возможность докачки , то readfile не подходит.
fread я использовать не хочу, так как очень сильно грузит apache, хотя им можно корректно отловить обрыв соединения.Использую след. код:
если использовать fpassthru , то в случае обрыва по ftell или return значению возвращается полный размер файла
Как можно отловить реально отданный размер файла при использовании fpassthru или readfile?
или заставить fread меньше кушать ресурсов apache?
Нужно узнать , какой размер от файла был передан клиенту, если клиент оборвал передачу.
Можно использовать : readfile , fread или fpassthru
Также стоит ignore_user_abort(true)
readfile и fpassthru являются предпочтительными, так как не нагружают apache , но так как нужно сделать возможность докачки , то readfile не подходит.
fread я использовать не хочу, так как очень сильно грузит apache, хотя им можно корректно отловить обрыв соединения.Использую след. код:
PHP:
$dl_size_block=1024*2
// код вырезан
while( !feof($fl) && (connection_status()==0) ) {
print(fread($fl,$dl_size_block));
//$dl_total+=$dl_size_block;
flush();
}
$dl['total']=ftell($fl);
fclose($fl);
PHP:
$dl_total=fpassthru($file);
//$dl_total=ftell($file);
fclose($file);
или заставить fread меньше кушать ресурсов apache?
