【发布时间】:2018-12-01 19:05:41
【问题描述】:
我有一个不断更新的 MySQL 表,它的行数少于 10。是否可以在网页中实时显示此表格?我听说可以使用ajax 来完成,到目前为止我看到的所有示例仍然非常混乱。到目前为止,我只使用 PHP 在网页中显示了一个静态表格,代码如下:
<table>
<tr>
<th>User ID</th>
<th>Current Location</th>
</tr>
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME','test1');
$link=mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_NAME);
if($link===false){
die("ERROR: Could not connect.". mysqli_connect_error());
}
$sql = "select * from last_seen";
$result = mysqli_query($link,$sql);
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
echo "<tr><td>".$row["user_id"]."</td><td>".$row["location"]."</td></tr>";
}
echo "</table>";
}
else{
echo "0 Results";
}
?>
但是我还没有找到不刷新页面就可以实时更新的方法。我要显示的表格如下:
user_id location
------- --------
1 room1
2 room2
3 room1
【问题讨论】:
-
首先,您需要在客户端和服务器之间建立永久连接,这显然超出了 php.ini 的范围。其次,您需要能够主动将表中的更改推送到客户端,这也是服务器端解决方案无法提供的。所以你肯定需要客户端逻辑。您可以使用 ajax 请求和轮询,或长轮询策略或 websockets 在发生更新时从服务器接收更新。然后就可以在客户端更新已有的表了。
-
套接字。事件源。阿贾克斯。方法有很多种,各有利弊,你最好自己研究一下,看看哪一种最适合你。
-
只是谷歌关于 SSE(服务器发送事件)。服务器将向客户端发送推送消息。