PHP: Check mysql database every 10 seconds for any new rows

前端 未结 5 1836
南笙
南笙 2021-01-20 17:23

I am making a php chat and am starting the php checking database part. So when a user types something into the chat, it gets recorded in the MySQL database, how would I chec

相关标签:
5条回答
  • 2021-01-20 18:09

    Use MySQL Event Scheduler.

    Below link will guide you through .

    http://www.9lessons.info/2012/10/mysql-event-scheduler.html.

    I think best option in your case .

    0 讨论(0)
  • 2021-01-20 18:11

    PHP doesn't have a setInterval function. While I'm sure you can use a crontask to automate it on the server, you can also achieve this with some simple Javascript.

    The concept you are trying to achieve is known as Short Polling. What you want to do is to have a setInterval function in Javascript that constantly makes AJAX requests to your PHP file which performs the check to the database for new messages. Your PHP should return that information to your script where you can then simply populate the user's screen.

    There is also Long Polling where you simply maintain the connection and have a setTimeout to wait for messages to come in. You can find more information yourself and if you have questions, you can come back here.

    A good video about this:

    https://www.youtube.com/watch?v=wHmSqFor1HU

    Hope this helps.

    0 讨论(0)
  • 2021-01-20 18:12

    Make a while for 30 seconds, and check the db every second, once you find a record the while is being broken, also it is being broken when 30 secs are expired.

    $sec = 1;
    while($sec <= 30) {
       if(has record)
          Send to the user;
       $sec++;
    
       sleep(one sec here);
    }
    

    Use sleep for 10 secs in order to check every 10 secs...

    0 讨论(0)
  • 2021-01-20 18:24

    AJAX is probably the simplest solution. You can perform an AJAX request on the same page your PHP code is executing on if you really want to.

    (function check() {
        $.get('mypage.php', function(data) {
            doSomethingWith(data);
            setTimeout(check, 5000); // every 5 seconds
        });
    })();
    
    0 讨论(0)
  • 2021-01-20 18:26

    This is what you need. We need set time for ajax auto reload. Don't put everything in one page. Because you must reload page to refresh data. That is bad solution.

    Call jQuery Ajax Request Each X Minutes

    0 讨论(0)
提交回复
热议问题