set_time_limit(0);
$filename = "file.mp3";
query("INSERT INTO download (file,size,time,operation) VALUES ('$filename','',now(),'started')");
header("Content-Type: audio/mpeg");
header("Content-transfer-encoding: binary");
$fp=fopen($filename, "r");
$res = fpassthru($fp);
query("INSERT INTO download (file,size,time,operation) VALUES ('$filename','$res',now(),'finished')");
У меня именно так всё и работает вместе с connection_aborted(). Обновляю я каждые 8192байт., ну и погрешность сколько закачал юзер соответственно.Развивая твой скрипт - обновлять что скачали каждые парочку килобайт. Сервак жалко, конечно. Ну да ничего, и не такое держит
) query("INSERT INTO download (file,size,time,operation) VALUES ('$filename','$res',now(),'finished')");
Тоже вариант.Автор оригинала: LexeY
Ямерт:
В твоем примере нужно строчку
поместить в отдельную функцию и обьявить ее вPHP:query("INSERT INTO download (file,size,time,operation) VALUES ('$filename','$res',now(),'finished')");
register_shutdown_function.