не удалось очистить буфер. Нет буфера для очистки с помощью метода ob_end_flush ()

Мой сайт воспроизводит потоковый mp3-файл, периодически я вижу сообщение об ошибке в лог-файле:

Notice: failed to flush buffer. No buffer to flush in

Ниже приведен код:

$filename = 'audio.mp3';
header("Content-Type: audio/mpeg");
header("Content-Length: ".filesize($filename));
header('Content-Disposition: inline; filename="' . $filename);
header("X-Pad: avoid browser bug");
header("Cache-Control: no-cache");
ob_clean();
flush();
set_time_limit(0);
$size = filesize($filename);
$chunksize = 1 * (1024 * 1024);
if ($size > $chunksize) {
$handle = fopen($filename, 'rb');
$buffer = '';
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
ob_start();
echo $buffer;
ob_end_flush();
flush();
}
fclose($handle);
} else {
readfile($filename);
}

Ошибка всегда относится к ob_end_flush (); линия.

0

Решение

Итак, глядя на PHP источник для ob_flush(), гдеfailed to flush buffer. No buffer to flushmsgstr «ошибка генерируется, похоже, ошибка генерируется, если нет активного выходного буфера.

Основываясь на источнике PHP, ob_end_flush() никогда не должен приводить к этой ошибке — это не может, это не в коде. Вы уверены, что у вас нет ob_flush() где-то в вашем коде, который вы не включили в то, что делитесь с нами в своем вопросе?

Во всяком случае, вы не проверяете возвращаемое значение ob_start() — он может потерпеть неудачу, и если ему не удастся создать новый выходной буфер, то последующий ob_flush() или же ob_end_flush() потерпит неудачу, потому что эти команды требуют активного выходного буфера для функционирования, и если его нет, они будут выдавать ошибки.

Вы можете увидеть в PHP источник для ob_end_flush() что ошибка, которую он выдает, когда нет активного буфера выводаfailed to delete and flush buffer. No buffer to delete or flush».

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]