Я работаю над видео-сайтом, на котором есть разные фильмы и видео, которые пользователи могут передавать и скачивать.Теперь меня просят ввести ограничение на загрузку таким образом, чтобы за один раз можно было загружать только 1 видео.Есть два сервера: мои файлы и база данных находятся на одном сервере, а видео - на другом.
То, что я делаю для загрузки, - это отправка запроса с первого сервера на файл на другом сервере.Если запрошенное видео существует, оно загружается.
Теперь я хочу ограничить пользователей, чтобы, если они уже загружают видео, они не могли загрузить другое, пока не завершится текущая загрузка.После завершения текущей загрузки пользователь может загрузить следующее видео.Я не видел ни одной функции, которая позволяла бы разработчику знать, когда загрузка была завершена.
У меня есть несколько соображений относительно хранения информации о времени загрузки в базе данных.Но хранение времени загрузки не является моим требованием.
Каков наилучший способ реализовать это?Есть ли событие, из которого мы можем определить время окончания загрузки?Есть ли какое-то решение этого?Я использую PHP, и вот код, который я использовал для загрузки файла со второго (видео) сервера.Этот файл отправляет запрос с именем файла и полным путем.Переменная $real_file
содержит имя файла и полный путь на втором сервере.
if(file_exists($real_file))
{
header("Pragma: public");
header("Cache-Control: private");
header("Expires: 0");
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding: binary');
header('Content-Encoding: none');
header("Content-Disposition: attachment; filename=".urlencode(basename($real_file)));
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($real_file));
header("Accept-Length: ".filesize($real_file));
$fp = @fopen($real_file, "rb");
while(!feof($fp))
{
$buffer= fread($fp, 8192);
echo $buffer;
}
@flush();
@ob_flush();
die();
}