Решение, которое я закончил, заключалось в следующем:
Позвоните на страницу Ajax и отобразите страницу ожидания.
function submit_form(file_method) {
var spinner = $('#loader');
spinner.show(); //show waiting div
var request = $.ajax({
url: "upload.php",
cache: false,
contentType: false,
processData: false,
async: true,
data: form_data,
type: 'POST',
success: function (res, status) {
if (status == 'success') {
window.location.href = 'results.php';
} },
error: function (jqXHR, textStatus,res) {
spinner.hide();
alert('Error encountered: '+textStatus+'-'+jqXHR.responseText);
} })
};
На странице php сохраните вывод в виде массива в переменной сеанса.
....functions that take time
$_SESSION['result'] = [RESULTS .......]
После успешного завершения вызова ajax пользователь перенаправляется на новую страницу. Новая страница использует переменную сеанса для вызова шаблона.
echo $twig->render('waiting.html.twig',$_SESSION['result'] );
unset($_SESSION['result']);