如何设置PHP等待任务完成?

时间:2015-10-12 18:31:56

标签: php

我有一个登录表单,其中为每个页面刷新生成唯一键。数据库表包含标志字段。如果它为0则则用户未登录,1表示已登录。因此,如果不刷新页面,我如何每隔5秒检查一次数据库以查看是否设置了标志?

我尝试使用sleep(5),但它会阻止页面加载,或者它会睡眠5秒钟然后加载页面。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

您需要有2页:

  1. 您的用户访问的页面(也是您在下面添加jQuery代码的页面)
  2. 读取数据库并打印出true / false的页面(在下面的示例中,我将其命名为“your_check_login_url.php”。)
  3. 第1页上的jQuery代码将在不刷新第1页的情况下阅读第2页。然后,您可以使用Javascript更新第1页上的内容。

    使用jQuery:

    <script>
    var tid = setTimeout(checkLogin, 5000);
    function checkLogin() {
        $.get( "your_check_login_url.php", function( data ) {
            alert(data.is_logged_in); // Replace with your own code
        });
        tid = setTimeout(checkLogin, 5000); // repeat myself
    }
    </script>
    

    在PHP端返回一个值JSON,否则你的Javascript可以读作真/假。

    <?php
    $logged_in = TRUE; //Replace with your PHP/MySQL code to check if log in is true
    header('Content-Type: application/json');
    echo json_encode(
        array('is_logged_in' => $logged_in)
    );