回声/打印东西到页面延迟在PHP中

时间:2016-02-01 15:21:09

标签: php jquery ajax

我想创建一个页面,在执行某些进程后会显示一些结果。每个过程可能需要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加载每个文件。但我不想将其拆分成不同的文件。

1 个答案:

答案 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";   
}

然后使用像

这样的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();