在我的网页中,当我单击按钮时,请求将通过我的服务器上的 php 文件上的 ajax 进行。下面是php文件。
现在您可以看到它有很多 echo 语句,因此当服务器正在处理数据时,我的网页必须等待 php 文件完成其处理。
有什么技术可以同时处理每个 echo 语句吗?
意思是,我不需要等待整个响应,我可以将响应的每个部分附加到我的网页。
<?php
$i = 0;
while($i<1000000){
echo $i;
$i++;
}
?>
首先你应该在 php 文件中设置标头以同时发送响应。
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');
使用 ob_flush() 和 flush() 刷新系统输出缓冲区。 你可以创建一个像这样的函数:
function sendMessage($message)
{
echo "data: $message" . PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
}
并且 .htaccess 中的 zlib.output_compression 应该关闭。
php_flag zlib.output_compression Off
最后你可以使用EventSource或XMLHttpRequest来获取数据。