下午好。
我有以下代码,该代码在提交时将数据发送到PHP文件,该文件查询多个网络节点的运行状况。问题在于任务需要大约40秒钟才能完成,并且在此期间没有输出。我尝试使用ob_flush和flush。没有效果,尽管我在代码的php部分中。我仍然可以看到加载消息,并在准备就绪后获得完整的打印输出。但是,flush
和ob_flush
通常可以在我的服务器上运行(经测试为独立脚本),所以这不是问题。
据我了解,这是jQuery / ajax调用,它等待代码完全执行后才吐出打印输出。我浏览了这些论坛,找不到任何适用的解决方案,因为它们大多数与我在使用“ POST”时与“ GET”请求有关。
有人可以为此指出正确的方向吗?在PHP仍在处理请求时,是否可以接收打印输出?
JS代码
$(document).ready(function(){
$('#userForm3g').on('submit', function(e){
e.preventDefault();
e.stopImmediatePropagation();
$('#response').html("<b>Loading data...</b>");
$.ajax({
type: 'POST',
url: 'myphpfile.php',
data: $(this).serialize()
})
.done(function(data){
$('#response').html(data);
})
.fail(function() {
alert( "Posting failed." );
});
return false;
});
});
谢谢!
答案 0 :(得分:0)
您提到的方法的问题在于,它有多种方法可能会失败:您可能会忘记清除php输出缓冲区,或者由于某些原因可能严格控制了设置,可能存在代理或负载均衡器等待请求完成的请求,或者也可以是Web浏览器(用于渲染部分内容的Chrome浏览器,但他们停止了执行此操作)。
尽管答案很少: