我正在关注服务器端事件的WC3教程,并且有兴趣知道我是否可以使用它们来仅在php脚本实际运行时传递事件/通知,即执行代码。理想情况下,我想使用服务器端事件来显示脚本执行进度并完全避免服务器轮询。
目前我非常简单的客户端代码如下:
<!DOCTYPE html>
<html>
<body>
<h1>Getting server updates</h1>
<div id="result"></div>
<script>
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("https://xyz.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
}
</script>
</body>
</html>
我的客户端代码如下:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
function send_message()
{
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
}
send_message();
?>
我知道上面是一个非常简单的例子但是我无法弄清楚如何启动和停止通知,反过来只在服务器端脚本运行时执行此操作 - 一个简单的服务器脚本示例仅适用于当计时器从1到10计数然后停止时,每秒发送一次通知。
这一切都可能吗?