如何在不停止脚本的情况下等待


How to wait without stopping script?

我有一个简单的网站ProjectX2,用户可以在其中互相发送消息。

我有一个PHP函数,其中包含用户想要每20秒"刷新"一次的新消息数。它从数据库中获取信息。

当我调用此函数时,它只有来自页面加载的新消息数 - 它不会在我每次调用它时自行更新。我从JavaScript中调用它,如下所示:

        function pum() {
            document.getElementById("usermessages").innerHTML = "<?php echo pum() ?>";
        }
        window.setInterval(pum,20000);

例如,如果我在访问开始时有 5 条新消息,除非我重新加载网页,否则它不会更改。

我尝试使用无限循环:

while(true) {
    pum();
    sleep(20000);
}

但是此方法不允许页面在后台加载。

所以,我的问题是,我如何刷新功能?有没有类似于sleep()的方法,页面可以在后台加载?

PHP 不在客户端运行。它是在提供给最终用户之前生成的。因此,当您加载页面时,您将拥有一个如下所示的块:

function pum() {
    document.getElementById("usermessages").innerHTML = "5";
}

注意 5 是如何静态存在的。无论你调用这个函数多少次,它只会返回 5,因为页面上的 PHP 已经执行并且脚本已关闭。它将包含页面加载时pum()包含的任何值。

你需要创建一个新文件,称之为pum.php它只包含echo pum();并关闭。然后,可以使用 AJAX 请求此文件并将其追加到元素中。

你应该在setInterval()中使用 AJAX 。