每秒执行一次while循环

时间:2017-02-08 15:22:36

标签: php

我得到了这个显示的循环,因为你可以看到用户输入的用户名和消息...但是在输入消息后,用户必须重新加载我的页面才能看到它。有没有办法让while循环在网站上运行时保持不断更新?!喜欢将它设置为每秒执行一次还是什么?

        <?php 
include "connect.php";
$query = "SELECT * FROM messages";
$result = $con->query($query);

if($result){

            while($row = $result->fetch_object()) 
            {
                echo "<ul id = 'rutor'>";
                echo '<li class = "userlada">'.$row->username. "</li>";
                echo '<li class = "usertext">'.$row->message. "</li>";
                echo "</ul>";
            }

}
?>

我不是php上的brigetest所以任何帮助都会很棒!:)

2 个答案:

答案 0 :(得分:3)

没有

PHP是服务器端的,所以如果你开始等待并在那里循环,你只需让浏览器等待它完成。

为此,您需要查看Javascript。

答案 1 :(得分:0)

我知道这将是一个非常不受欢迎的观点,实际上没有任何有用的应用程序,并且可怕的事情要做,因为如果超过200人只是打开你的页面它将导致你的服务器崩溃。但是......

,使用iframe可以轻松完成。方法如下:

创建一个只为这些消息提供服务的页面。让我们称它为'bad_practice.php&#39;。你想要做的是让你的代码看起来像这样:

ob_implicit_flush();//makes php NOT buffer and send data straight to screen
$last_id=1234;//or keep track of it.

while(true)
{
$new_query=DB::Query("select * from messages where id> :last_id",array(":last_id"=>$last_id));
while($row=$new_query->fetch())
{
                echo "<ul id = 'rutor'>";
                echo '<li class = "userlada">'.$row->username. "</li>";
                echo '<li class = "usertext">'.$row->message. "</li>";
                echo "</ul>";
                $last_id=$row['id'];
}

sleep(1);
}

之后,您需要在主页上创建一个iframe

<iframe src="bad_practice.php">

你应该有一个不断刷新的清单。