Я пытаюсь сделать мессенджер используя PHP и SQL
Это мой код
<form action="send_post.php" method="post">
<h3>Name:</h3>
<input type="text" name="name">
<h3>Message:</h3>
<input type="text" name="message">
<input type="submit">
</form>
<?php
$servername = "servername";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, name, message FROM chat";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
while(1){
ob_start();
echo "" . $row["name"]. " - " . $row["message"]. "<br>";
sleep(10);
echo "" . $row["name"]. " - " . $row["message"]. "<br>";
ob_end_clean();
}
}
}$conn->close();
?>
Однако это не работает, есть ли причина для этого?
Проблемы начались, когда я добавил бесконечный цикл while для обновления сообщений.
PHP работает на стороне сервера, что означает, что клиент (гость) запрашивает страницу, которую сервер затем «компилирует», чтобы затем отправить клиенту на языке клиента, таком как HTML. Если код PHP никогда не достигает конца / остановки, клиентский браузер подумает, что сервер перестал отвечать, и выдаст ошибку.
Чтобы достичь того, что вы пытаетесь сделать, вы можете захотеть посмотреть на что-то вроде JQuery AJAX что позволяет клиенту получать данные с сервера отдельно от основного запроса. Таким образом, вы можете иметь один файл, показывающий только сообщения, и запрашивать этот файл по таймеру, сохраняя форму как обычную загрузку страницы. Однако вы также можете сделать форму динамической, используя JQuery AJAX
ОБНОВИТЬ Вы можете посмотреть на это Сообщение блога чтобы понять, о чем я говорю.
Других решений пока нет …