如何在PHP中每分钟创建一次自动刷新页面

时间:2018-07-23 10:44:16

标签: php actionscript page-refresh

我想让我的网站每分钟刷新一次页面,例如:60秒/ 1分钟。我有放置代码的索引。其实我是从会员那里收到消息的,所以管理仪表板可以每分钟查看一次收件箱。有人可以提供一些文档或示例来使用PHP吗? 请不要使用javascript或ajax,谢谢

<?php 
    header("Refresh: 60");
    session_start();
    include "conn.php";
    $koneksi=open_connection();

if (isset($_SESSION['id']))
{
    $id=$_SESSION['id'];
    $level = $_SESSION['level'];
    $username = $_SESSION['username'];
}else{
echo'<script>document.location.href="index.php?status=forbidden"</script>';
}

require_once('topbar.php');



require_once('sidebar.php');
                $page=(isset ($_GET['page']))? $_GET['page'] : 'main';
                    switch($page){
                        case 'data':include "halaman/data.php";
                            break;                   
                        case 'main':default: include 'beranda.php';
                    }
 require_once('footer.php');
?>

4 个答案:

答案 0 :(得分:1)

不能。当页面内容发送到浏览器时,PHP停止工作。而且它不会影响客户端(浏览器)。您可以为此使用JavaScript,为此使用Ajax调用和setInterval()(如上面的注释中所述)。只需创建一个单独的端点,您将每分钟向该端点请求新信息。

答案 1 :(得分:0)

您可以使用以下方法刷新页面: header("Refresh: 60"); 但是请确保将其放在任何输出之前,这意味着您甚至不能在php代码之前写一个空格

<?php 
    session_start();
    header("Refresh: 60");
    include "conn.php";
    $koneksi=open_connection();

if (isset($_SESSION['id']))
{
    $id=$_SESSION['id'];
    $level = $_SESSION['level'];
    $username = $_SESSION['username'];
}else{
echo'<script>document.location.href="index.php?status=forbidden"</script>';
}

require_once('topbar.php');

//**I want to put "auto refresh page" here**

require_once('sidebar.php');
                $page=(isset ($_GET['page']))? $_GET['page'] : 'main';
                    switch($page){
                        case 'data':include "halaman/data.php";
                            break;                   
                        case 'main':default: include 'beranda.php';
                    }
 require_once('footer.php');
?>

答案 2 :(得分:0)

尽管您已经接受了一个答案,但我想告诉您另一种方法。您说您需要显示由网站成员发送给管理员的消息,对吗?您不能单独使用PHP。至少这样做不是很优雅。您可能想看看 HTML5服务器发送的事件。当数据库中出现新消息时,您可以自动将其发送到管理员的网页,而无需重新加载。

实现此目的的代码将涉及JavaScript和PHP。这是一个粗略的示例:

在网页的脚本标签中,打开与服务器的连接,如下所示:

var messageEvent = new EventSource("some/relative/path/blah blah/message_updates.php");
//onopen, onmessage and onerror and different events that can occur
messageEvent.onmessage = function(event) {
    //Your logic to display the received data to frontend goes here. Example:
    //document.getElementById("messages").innerHTML += event.data;
    //if event.data is a JSON, then parse it and do stuff
};

现在到服务器的流保持打开状态,所有新消息将立即发送到客户端。但是在此之前,您需要放置PHP逻辑。所以..

在您的 message_updates.php 文件中:

 <?php
//Content-Type should compulsorily be text/event-stream
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

//write whatever logic you like to check the database for new messages here
$message=your_own_logic();
//$message should better be a JSON, like {"user":"dopedude","message":"hello"} etc. 
echo "data: $message";
//note that the messages should start with "data: ".
//In the client, this "data: " will be omitted automatically
?>

我将为您提供一些链接以继续进行操作:

Mozilla docs

w3schools

PHP library for Server-Sent Events(可选,但推荐)

答案 3 :(得分:-1)

像这样的简单步骤,

<!DOCTYPE html>
<html>
<head>
    <title>Autorefresh Browser using jquery</title>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            startRefresh();
        });
        function startRefresh() {
            setTimeout(startRefresh,100);
            $.get('text.html', function(data) {
                $('#viewHere').html(data);
            });
        }
    </script>

</head>
<body>
    <div id="viewHere"></div>
</body>
</html>

有关完整教程https://youtu.be/Q907KyXcFHc的这段视频