PHP进程停止页面完全加载和显示
PHP Process Stops Page from Fully Loading and Displaying
请耐心听我说,我将试着解释这个问题,我相信其他人也遇到过这个问题,但在网上找不到任何解决办法。
Page 1 (PHP Page with Ajax)目的是收集数据并重定向到下一页显示更新页面,即
window.location.replace("Updating.php"); <-- This is Page 2
Page 2(一个带有少量html和PHP脚本的PHP页面,用于更新服务器数据库)问题是,直到PHP脚本完成之后,这个页面才会完全呈现。因为这个过程可能需要10秒左右的时间,用户会想知道发生了什么,基本上更新页面(第2页)直到脚本完成才呈现,这当然违背了目的。
是否有一个类似于javascript onload <body onload="myFunction()">
的函数,可以在脚本开始运行之前呈现页面。我不认为有,但我将欣赏和洞察如何克服这个问题。
编辑添加请求的AJAX代码
function handleDataCallback(result) {
var json = eval('(' + result + ')');
if (json['msg'] != "") {
// alert(json['dirID']);
processUpload(json['dirID']);
}
};
/*
* This is called when uploadFile.js is finished.
* We many need to add an AJAX WaitforID here in case the processUpload takes too long.
*/
function processUpload(data){
var dir_name = data;
$.ajax({
url: 'processUpload.php',
type: 'POST',
data: {'folderKey' : dir_name },
success: function(data) {
'<%Session["dir_id"] = "'+ dir_name + '"; %>';
//Takes us back to the index file with the directory
// window.location.replace("../../index.php?dir_id="+dir_name);
window.location.replace("Updating.php");
}
});
};
/*
* Obtains the dirID
*/
function waitForDataID (handleDataCallback) {
$.ajax({
type: "GET",
url: "extractArchives.php",
async: true,
cache : false,
timeout: 10000, // sets timeout to 30 seconds
success : handleDataCallback,
erorr : function (XMLHttpRequest,textStatus, erorrThrown) {
alert("erorr :" + textStatus + "(" + erorrThrown + ")");
}
});
};
您可以使用window.onload
javascript特性。把你所有的功能都放进去。这样,您的代码将只在页面完全加载完成时执行。
window.onload = function () {
// Your code here ...
}
此页面在PHP脚本完成之前不会完全呈现
你的选择是:
- 在执行缓慢的PHP操作之前输出HTML。这样做的问题是,在显示页面之前,您不知道PHP处理的结果。此外,您需要确保在启动慢速程序之前清空所有缓冲区。这里不需要特殊的函数(有一个register_shutdown()函数,可以使用 -但它用于其他事情,在这里完全没有必要)。确保设置了ignore_user_abort()。
- 加速PHP的东西(10秒表明这里有一个很多改进的范围-但是你没有向我们展示任何正在运行的代码。
- 显示一个保持页面,在完成或设置延迟后通过javascript重定向到最终页面。
- 从第二页删除缓慢的PHP代码,并将其作为该页的后续请求调用(确保设置了ignore_user_abort())
请注意,除了实际修复性能问题之外,上述所有选项都会在您的服务器上暴露DOS漏洞。
相关文章:
- 如何在生成下载文件时显示加载动画
- 如何在谷歌字体加载时显示加载图像
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何用ajax实现加载显示
- 使用javascript加载/显示图像并获得%下载
- 谷歌地图不会加载/显示KML文件
- 我的图片不是使用惰性加载显示的
- javascript d3可视化不加载/显示,直到点击HTML输入
- 导航标签动态加载/显示
- jQuery Select2远程数据加载:显示选项而不是占位符
- Console.log一些东西一旦异步Facebook喜欢按钮加载(显示)
- PHP停止表单重新加载显示错误Js
- 预加载显示/隐藏分区
- ReCaptcha不会在IE中加载/显示,但在Chrome和safari中可以完美运行
- dom事件——通过JavaScript加载显示一个又一个元素
- jQuery延迟加载-显示的问题:无
- Json.数据没有正确加载/显示
- 在每个页面加载显示不同的图像
- 如何检测PDF数据对象是否在html对象中加载/显示/有效
- Jquery添加页面加载显示请求的标签功能