Javascript重定向不';不要立即完成PHP进程
嗨,我只是想知道为什么我的javascript重定向在php响应后不能立即工作?这是一个场景, 1.我正在向我的php脚本发送post请求。 2.然后,我的php脚本将处理这个过程并返回一个字符串“ok”,以标识该过程已完成(但我的脚本正在执行一个耗时太长的后台过程)。 3.如果字符串正确,我将把用户重定向到确认页面。但在返回“ok”字符串后,我的重定向不会立即生效,它似乎仍在等待PHP进程完成。下面是我的代码Javascript重定向不';不要立即完成PHP进程,javascript,php,jquery,apache,Javascript,Php,Jquery,Apache,嗨,我只是想知道为什么我的javascript重定向在php响应后不能立即工作?这是一个场景, 1.我正在向我的php脚本发送post请求。 2.然后,我的php脚本将处理这个过程并返回一个字符串“ok”,以标识该过程已完成(但我的脚本正在执行一个耗时太长的后台过程)。 3.如果字符串正确,我将把用户重定向到确认页面。但在返回“ok”字符串后,我的重定向不会立即生效,它似乎仍在等待PHP进程完成。下面是我的代码 <?php $success = $payment->do_p
<?php
$success = $payment->do_payment();
if (!$success) {
throw new Exception("error on payment");
}
set_time_limit(0);
ignore_user_abort(true);
header("Connection: close\r\n");
header("Content-Encoding: utf-8\r\n");
ob_start();
echo "ok"; // This return to the frontend immediately
$size = ob_get_length();
header("Content-Length: {$size}", true);
ob_end_flush();
ob_flush();
flush();
// Below this line is a long php process that takes almost a minute
$this->veryLongProcessRunningOnBackground();
您需要使用类似于套接字连接的方法来完成此操作
可能会有帮助。您需要使用套接字连接之类的连接来完成此操作 也许会有帮助
function payment_do_payment(token){
$.ajax({
url: '/payment',
data:{
mydata: "The data"
},
success: function(txt){
if (txt == "ok"){
console.log("done redirecting now");
window.location.href = "/confirmation-page";
}else{
alert("Failed to process");
}
},
type: 'POST'
});
}