如果我在文件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.
...
您可以尝试使用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()));
你不能这样做,因为ajax在php端等待操作完成。
您应该离线运行您的php(在后台)并使用ajax 来简单地询问状态(即从会话中读取有关进度的信息)。