readfile — Почему моя страница продолжает загружаться после загрузки файла в php?

У меня есть страница php, которая запускает скрипт bash, а затем загружает выходной tar. Проблема в том, что после загрузки файла страница продолжает загружаться и никогда не перенаправляет. Я обнаружил некоторые проблемы, подобные этой, но ничего, что кажется применимым к моему делу. Мой код выглядит следующим образом:

<?php$output=shell_exec('cd /opt/dir/  && sudo ./collect_diagnostics.sh && cd -');
$rows_output = explode("Report is in ", $output);
$rows_output2 = explode(" ", $rows_output[1]);

$path_parts = pathinfo($rows_output2[0]);
$file_name  = $path_parts['basename'];
$file_path  = "/opt/dir/test/".$file_name;

if (is_readable($file_path )) {
header('Content-Disposition: attachment; filename="'.$file_name.'"');
ob_clean();
readfile($file_path);
} else {
echo "404 Error";
}

header( 'Location:./aps_control.php' ) ;
?>

Просто чтобы прояснить, у меня работает скрипт bash, загрузка происходит и у меня есть действительный файл. Похоже, единственные проблемы заключаются в том, что страница никогда не завершает загрузку, и я не уверен, связано ли это с этим, но файл, распакованный в 7-zip, говорит «Есть некоторые данные после окончания данных полезной нагрузки: version_Placeholder.tar». Также я очень хочу знать, что я делаю неправильно для личного совершенствования.

Мой основной ресурс для изучения, как загрузить файлы был http://www.media-division.com/the-right-way-to-handle-file-downloads-in-php/

0

Решение

Вы не должны пытаться показать страницу и обслуживать файл в том же запросе. Просто подайте файл.

Если вы хотите, чтобы пользователь перешел на новую страницу с кнопкой «Назад», вам следует перенаправить его на эту страницу, и эта страница должна вызвать новую страницу, которая выполняет загрузку. Не объединяй их.

1

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

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

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