什么是更好的无限循环或ajax / setInterval梳子

时间:2016-08-20 10:02:48

标签: php ajax

我必须对数据库表“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;

?>

我希望你能帮助我,理解我想要做的事情。

1 个答案:

答案 0 :(得分:0)

首先,无限循环始终是一种风险。但如果你必须这样做,我认为它更好如果你在客户端这样做:

首先,你必须照顾你的服务器,因为如果有人阻止它......如果用户阻止他的PC,它只是一台PC,只是一个用户。

其次,如果你需要一个永久的开放连接(比如PHP无限循环),你可能更喜欢在PHP聊天程序中打开一个Socket。

关于permormance,一个Shocket它是最好的解决方案(在我看来)。

您可以查看此链接: https://www.sanwebe.com/2013/05/chat-using-websocket-php-socket