2016-11-25 8 views
-1

Я знаю, как установить интервал для функции, и попытался использовать его в этом случае, но я не мог заставить его работать. Вот мой код. Мне нужно, чтобы он делал одну и ту же инструкцию SELECT каждые 5 секунд.Как сделать запрос SQL SQL SELECT каждые 5 секунд?

$Select = "SELECT * FROM Messages ORDER BY ID DESC LIMIT 10"; 
$Result = $Connect->query($Select); 

if (mysqli_num_rows($Result) > 0) { 
    while($Row = mysqli_fetch_assoc($Result)) { 
     echo "ID " . $Row["ID"] . " MSG " . $Row["Message"] . "<BR>"; 
    } 
} 
+3

Что не работает. Не очень полезное описание, которое не могло заставить его работать. – RiggsFolly

+0

Сделать CRON, который запускается каждую минуту, а затем иметь цикл, который работает в течение 60 секунд внутри цикла в течение 5 секунд. – chris85

+0

Я пробовал это, но с оператором if, и это не сработало: setInterval (function() {// метод, который должен быть выполнен;}, 5000); – Alanay

ответ

0

Это можно сделать, используя PHP sleep(). Я действительно не предлагал бы этого, поскольку он не ведет себя как JS setInterval(). PHP не является асинхронным, как JS.

<?php 
    function setInterval($func, $seconds) { 
     while(TRUE) { 
      $func(); 
      sleep($seconds); 
     } 
    } 

    setInterval(function() { 
     global $Connect; 
     $Select = "SELECT * FROM `Messages` ORDER BY `ID` DESC LIMIT 10"; 
     $Result = $Connect->query($Select); 

     if(mysqli_num_rows($Result) > 0) { 
      while($Row = mysqli_fetch_assoc($Result)) { 
       echo 'ID ' . $Row['ID'] . ' MSG ' . $Row['Message'] . '<br>'; 
      } 
     } 
    }, 5); 
?> 

Лучше всего было бы использовать AJAX для загрузки этого в окно, используя метод JS setInterval(), если вы хотите, чтобы это отображается в HTML, так как вы используете <br/> тегов.

+1

Просто примечание: это заблокирует процесс для интервала, так как PHP работает синхронно. Если вы хотите, чтобы это было обработано рядом с какой-либо другой работой, вы должны использовать потоки. Темы доступны в PHP> 5 с использованием расширения PECL 'pthread' рядом с (возможно) расширениями общей памяти; но это далеко не так, как обработка основных потоков на C или любом другом языке среднего уровня. См. Это http://php.net/manual/en/book.pthreads.php – Cunning

+0

Почему кто-то проголосует за мой ответ? OP захотел «чистого PHP» решения, и я предоставил его. Я посоветовал использовать его и предложил более применимый метод. Я действительно хочу, чтобы люди сообщали о том, почему они голосуют за ответ! – Daerik

 Смежные вопросы

  • Нет связанных вопросов^_^