当HTML,PHP代码仍在运行时,Javascript文本会发生变化

时间:2017-11-02 03:00:16

标签: javascript php html

我尝试使用PHP在Java中使用多线程执行类似的操作。我知道Javascript是单线程的,PHP也没有那么多的线程。这是我的代码:

<body>
  <p id='logS'></p>


  <script>
    function writeMsg(msg) {
      document.getElementById("logS").innerHTML += msg;
    }

    setInterval(function(){ // this function is for testing
      document.getElementById("logS").innerHTML += "-Boop-<br/>";
    },500);
  </script>

  <?php
    $arrayTest = array(); 
    // Add elements into array
    $myVariables = 0; // some value

    for($i=0;$i<count($arrayTest);$i++){
      runProcess($myVariables);

      echo "<script>";
      echo "writeMsg('Counter '".$i."' is completed.<br/>')";
      echo "</script>";
    }

    function runProcess($variables){
      // my complicated codes (1 second to complete)
    }
  ?>
</body>

假设我的$ arrayTest有2个元素,每个runProcess加载大约需要1秒(由于循环,sql_queries)

我希望'logS'实现的是这种格式:

-Boop-
-Boop-
计数器0完成 -Boop-
-Boop-
柜台1完成 -Boop-
-Boop-(无限回声'-Boop-'每0.5秒)

我得到的是页面运行2秒而不是Booping(对于runProcess())代码,然后只运行-Boop-s。

计数器0完成 柜台1完成 -Boop-
-Boop-(无限回声'-Boop-'每0.5秒)

所以让我们说数组中的1000个元素,意味着它将运行1000秒而不回显东西,然后在那个打印之后整个“Counter x完成”然后只启动Booping,这违背了我的代码的目的。 / p>

总结:

我想要做的是让每个计数器完成,它将显示它已完成。就像一个日志。

甚至可以在HTML,PHP和Javascript中执行此操作吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在php中尝试刷新功能。

  echo "<script>";
  echo "writeMsg('Counter '".$i."' is completed.<br/>')";
  echo "</script>";

  ob_flush();
  flush();