2016-11-25 6 views
-1

私は関数のインターバルを設定する方法を知っていて、この場合に使用しようとしましたが、動作させることができませんでした。ここに私のコードです。同じSELECT文を5秒ごとに作成する必要があります。PHP 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); 
?> 

あなたの最善の策は、あなたが<br/>タグを使用しているので、これはHTMLで表示したいと仮定すると、JS setInterval()方法を使用して、ウィンドウにこれをロードするためにAJAXを使用することです。

+1

ちょうどメモ:これは、PHPが同期して実行されているので、その期間のプロセスをロックします。これを他の作業とともに処理したい場合は、スレッドを使用する必要があります。 PHP> 5ではPECLの 'pthread'拡張を使用して(おそらく)共有メモリ拡張を使用してスレッドを利用できます。 Cやその他の中級言語のコアスレッド処理とはそれほど離れているわけではありません。これを参照してくださいhttp://php.net/manual/en/book.pthreads.php – Cunning

+0

なぜ誰かが私の答えを投票しますか? OPは「純粋なPHP」ソリューションを求めていました。私はそれに反対して、より適切な方法を提案しました。私は本当に人々が答えを投票する理由についてのフィードバックを提供したいと思っています! – Daerik

関連する問題