Определить размер буферизованного файла в php - PullRequest
1 голос
/ 17 октября 2019

Как я могу определить, буферизовал ли пользователь половину файла, когда я обслуживаю файл с помощью 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();
    }
...