我必须对数据库表“soundboard”中的状态更改做出快速反应。如果状态更改为2,我希望我的应用程序会注意到它。
最好的是,我为无限循环创建了两个示例,为ajax / setInterval脚本创建了一个示例。
首先是无限循环:
<?php
// Settings & Connection
set_time_limit (0);
$data = array(
"id" => "",
"file" => ""
);
$db = new mysqli('p:localhost', 'username', 'password', 'database');
// Query 2 DB
$sql = "SELECT id, name, file FROM soundboard WHERE status = 2 LIMIT 1;";
while(TRUE) {
$result = $db->query($sql);
if($result->num_rows > 0) {
// Fill $data here
echo json_encode($data);
break;
}
unset($result);
sleep(5);
}
$db->close();
unset($db, $data, $sql);
exit;
?>
或者这对性能有好处吗?
<?php
// Settings & Connection
$data = array(
"status" => 0,
"id" => "",
"file" => ""
);
$db = new mysqli('localhost', 'username', 'password', 'database');
// Query 2 DB
$sql = "SELECT id, name, file FROM soundboard WHERE status = 2 LIMIT 1;";
$result = $db->query($sql);
if($result->num_rows > 0) {
// Fill $data here
}
$db->close();
echo json_encode($data);
unset($db, $data, $sql);
exit;
?>
我希望你能帮助我,理解我想要做的事情。
答案 0 :(得分:0)
首先,无限循环始终是一种风险。但如果你必须这样做,我认为它更好如果你在客户端这样做:
首先,你必须照顾你的服务器,因为如果有人阻止它......如果用户阻止他的PC,它只是一台PC,只是一个用户。
其次,如果你需要一个永久的开放连接(比如PHP无限循环),你可能更喜欢在PHP聊天程序中打开一个Socket。
关于permormance,一个Shocket它是最好的解决方案(在我看来)。
您可以查看此链接: https://www.sanwebe.com/2013/05/chat-using-websocket-php-socket