我想做一个页面,将显示一些进程执行后的一些结果。每个过程可能需要2-10秒。因此,我不想等待所有过程都完成,而是希望在完成后打印每个过程的结果。
例如:
<?php
echo "1";
sleep(5); // some process that will execute 5 seconds
echo "2"
sleep(8); // some process that will execute 8 seconds
echo "3"
sleep(5); // some process that will execute 5 seconds
?>因此,在浏览器中打开此PHP文件时,打印"1“,5秒后打印"2”,然后继续。我如何在PHP中做到这一点呢?一种方法是将这些文件转换为单独的PHP文件,然后使用ajax加载每个文件。但是我不想把它分成不同的文件。
发布于 2016-02-01 23:38:15
使用操作来分隔脚本的不同部分。这样你就不需要分成不同的脚本。
$action = empty($_REQUEST['action']) ? null : $_REQUEST['action'];
switch($action){
case 1:
// do stuff
break;
case 2:
// do stuff
break;
case 3:
// do stuff
break;
case 4:
// do stuff
break;
default:
echo "you fucked up";
}然后使用ajax,如下所示
function doAjax(action){
if('undefined' == typeof(action)) action = 1;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("results").innerHTML = xhttp.responseText;
action++;
if(action<4) doAjax(action);
}
};
xhttp.open("GET", "myPHPScript.php?action="+encodeURIComponent(action), true);
xhttp.send();
}
doAjax();https://stackoverflow.com/questions/35134099
复制相似问题