0

如果我在文件test.php中有下一个算法:

for ($i = 0; $i < 1000; ++$i)
{
     //Operations...
     ALERT_TO_MAIN_PAGE($i);
}

我用 AJAX 从页面main.html调用test.php

如何$i使用实时值跟踪 , 的进度?

所以main.html会像这样显示,在 PHP 文件完成一次迭代的时候:

Done 0.
Done 1.
Done 2.
...
4

2 回答 2

2

您可以尝试使用HTML5 Server Sent Events将类似的消息发送到浏览器。

马上离开网站

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); // recommended to prevent caching of event data.

/**
 * Constructs the SSE data format and flushes that data to the client.
 *
 * @param string $id Timestamp/id of this connection.
 * @param string $msg Line of text that should be transmitted.
 */
function sendMsg($id, $msg) {
  echo "id: $id" . PHP_EOL;
  echo "data: $msg" . PHP_EOL;
  echo PHP_EOL;
  ob_flush();
  flush();
}

$serverTime = time();

sendMsg($serverTime, 'server time: ' . date("h:i:s", time()));
于 2012-07-13T13:11:59.927 回答
1

你不能这样做,因为ajax在php端等待操作完成。

您应该离线运行您的php(在后台)并使用ajax 来简单地询问状态(即从会话中读取有关进度的信息)。

于 2012-07-13T13:10:00.517 回答