【发布时间】:2018-01-16 00:22:06
【问题描述】:
我正在使用 PHP 和 MySQL 构建一个(非常基本的)应用程序。此应用程序的目的是在网页上显示“实时”数据交易。这些事务来自 MySQL 数据库中的 transactions 表。
到目前为止,我可以在网页上检索和显示数据。但是,当新事务插入transactions 表时,我希望看到数据刷新仅?
当前实时提要重复显示最后一条记录,直到插入新事务,此循环。
到目前为止我的代码是;
transactions.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>HTML5 Server-Sent Events</title>
<script type="text/javascript">
window.onload = function(){
var source = new EventSource("transactions.php");
source.onmessage = function(event){
document.getElementById("result").innerHTML += "New transaction: " + event.data + "<br>";
};
};
</script>
</head>
<body>
<div id="result">
<!--Server response will be inserted here-->
</div>
</body>
</html>
transactions.php
<?php
include 'conn.php'; // database connection
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
$query = "SELECT TimeStamp, CardNo FROM transactions ORDER BY TimeStamp DESC LIMIT 1";
// `TimeStamp` is in the format YYYY-MM-DD H:i:s
if ($result = $conn->query($query)) {
$row = $result->fetch_assoc();
echo "data: " . $row['CardNo'] . "\n\n";
}
flush();
?>
如果这有什么不同的话,我一直在关注this tutorial。
我的问题;
- 如何仅在插入新交易时刷新实时供稿?
- 当前实时提要大约每 3 秒刷新一次,这是在哪里设置的?
感谢任何帮助。
【问题讨论】:
-
您的查询看起来会从事务表中获取所有行。但是你每次只从结果集中取一行??????这很可能总是同一行,但不一定是第一个或最后一个进入表格的行
-
基于这段代码,您可能必须在每次检索值时存储最新的 id,并检查 id 是否
-
你的服务器 PHP 代码应该在一个循环中。循环应该以某种方式检查新条目,并且只有在找到新条目时才发送它。服务器通过不断循环提供消息泵。 javascript 只是对来自服务器 PHP 代码的传入消息做出反应
-
不要认为这是一个很好的教程。把它从你的好教程列表中删除
-
@marekful 的回答非常好。这应该就是让您的泵正常工作所需要的一切
标签: javascript php mysql html