2016-11-25 6 views
-1

함수의 간격을 설정하는 방법을 알고이 경우이 함수를 사용해 보았지만 작동시키지 못했습니다. 여기 내 코드가있다. 5 초마다 동일한 SELECT 문을 작성해야합니다.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가 동 기적으로 실행되기 때문에 간격 동안 프로세스를 잠글 것입니다. 이 작업을 다른 작업과 함께 처리하려면 스레드를 사용해야합니다. 공유 메모리 확장과 함께 PECL'pthread' 확장을 사용하여 PHP> 5에서 스레드를 사용할 수 있습니다. C 나 다른 중간 수준 언어로 처리하는 핵심 스레드와 별개의 것은 아닙니다. http://php.net/manual/en/book.pthreads.php – Cunning

+0

누군가 내 대답에 투표하는 이유는 무엇입니까? OP는 '순수 PHP'솔루션을 원했고 그 중 하나를 제공했습니다. 나는 그것의 사용에 반대하고 더 적절한 방법을 제안했다. 나는 왜 사람들이 답을 내려야하는지에 대한 피드백을 사람들이 제공하기를 바란다. – Daerik