Как я могу определить, буферизовал ли пользователь половину файла, когда я обслуживаю файл с помощью php?
Я хочу добавить статистику для файла, когда пользователь достигает половины файла при загрузке или потоковой передаче. .
Например, есть файл размером 3 МБ, и мне нужно добавить статистику в мою базу данных, когда пользователь достигнет половины ее путем потоковой передачи
while(!feof($fm) && $cur <= $end && (connection_status() == 0))
{
if(!isset($_SESSION['plays'][$pid])) {
$_SESSION['plays'][$pid] = [
'status' => 0,
'buffered' => 0,
'passed' => $size/2
];
}
$bytes = min(1024 * 16, ($end - $cur) + 1);
ob_flush();
flush();
echo fread($fm, $bytes);
$cur += 1024 * 16;
$_SESSION['plays'][$pid]['buffered'] += $bytes;
if(!$_SESSION['plays'][$pid]['status'] && $_SESSION['plays'][$pid]['buffered']>$_SESSION['plays'][$pid]['passed']) {
$_SESSION['plays'][$pid]['status'] = 1;
$dataToSend = [
'ip' => $_SERVER['REMOTE_ADDR'],
'user_id' => $userId,
'post_id' => $pid,
'type' => 'play',
'client_id' => isset($decoded->aud) ? $decoded->aud : null,
];
}
ob_flush();
flush();
}