我想创建一个页面,在执行某些进程后会显示一些结果。每个过程可能需要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加载每个文件。但我不想将其拆分成不同的文件。
答案 0 :(得分:0)
使用操作来分隔脚本的不同部分。这样你就不必分成不同的脚本。
$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";
}
然后使用像
这样的ajaxfunction 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();