Вы можете сделать это довольно просто, просто используя 2 файла - index.php
, который отображает HTML-страницу, и get_messages.php
, который обслуживает последние сообщения.
При этом используется jQuery для выборки на стороне сервера , но это больше библиотека, чем фреймворк;)
HTML-страница index.php
отправляет запрос на get-messages.php
каждые 3 секунды, обновляя страницу новыми сообщениями.
Серверный сценарий get_messages.php
также случайным образом создает сообщения, поэтому вы можете видеть мгновенные результаты ... как только вы увидите его в действии, вы можете удалить все между // --- BEGIN FAKE MESSAGE CREATION --- //
и // --- END FAKE MESSAGE CREATION --- //
комментариями и добавить Ваш собственный код базы данных в соответствующем месте.
Надеюсь, я добавил достаточно комментариев, чтобы объяснить, что происходит, где и почему!
index.php
<?php
// --- BEGIN FAKE MESSAGE CREATION --- //
session_start();
unset( $_SESSION[ 'messages' ] );
// --- END FAKE MESSAGE CREATION --- //
?>
<!--DOCTYPE HTML -->
<html>
<head>
<meta charset="utf-8">
<title>Messages</title>
<!-- Load jQuery -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
</head>
<body>
<h1>Messages</h1>
<!-- This <div> is where messages will be displayed -->
<div id="message_list"></div>
<script>
function get_messages() {
// Load messages from the server
$.ajax({
url: 'get_messages.php',
success: function(result){
// Insert the result into <div id="message_list">
$("#message_list").html(result);
}
});
}
// Wait for the page to load...
$(document).ready( function() {
// Get messages straight away
get_messages();
// Call get_messages() every 3 seconds
setInterval( get_messages, 3000 );
});
</script>
</body>
</html>
get_messages.php
<?php
// --- BEGIN FAKE MESSAGE CREATION --- //
session_start();
// Maybe create a new message?
if ( !rand( 0, 3 ) )
$_SESSION[ 'messages' ][] = md5( time() );
$messages = $_SESSION[ 'messages' ];
// --- END FAKE MESSAGE CREATION --- //
echo '<p>Last updated: ' . date( 'H:i:s' ) . '</p>';
// *** This is where you'd loop through your database entries *** //
foreach ( $messages as $m )
echo $m . '<br>';
?>
Я знаю, что это далеко не самое элегантное решение, но, надеюсь, это хороший простой пример - одним из улучшений будет возвращение только новых сообщений и добавление их в существующий список (для экономии полосы пропускания и т. Д.) ... но я оставлю это для вас, чтобы выяснить!