Обновление SQL db из файла php одновременно с двух разных веб-страниц - PullRequest
0 голосов
/ 29 апреля 2020

, поэтому клиент требует, чтобы я знал, какие пользователи находятся в сети, мой логин c - это, каждые 2 секунды, обновлять базу данных значением «Время последнего пинга», если время последнего пинга пользователя превышает 30 секунд, вкладка закрыта или сеть отключена.

Я сталкиваюсь с проблемой, хотя, что это работает, mysqli_query возвращает 1 и имя пользователя является действительным, я вижу, база данных обновляется , НО, если я открою страницу сообщества, которая пытается получить доступ к одному и тому же файлу php и базе данных одновременно, то я получу пустой ответ, кроме того, после этого страница некоторое время перезагружается.

Я получаю

9jquery.min.js:2 POST http://xxx/onlineupdate.php net::ERR_EMPTY_RESPONSE

Я предполагаю, что сервер (cpanel через godaddy, php 7.3, mysql база данных) считает, что это атака DDOS или что-то в этом роде, мое мышление не так? Вот что я собирался сделать:

Поэтому я поместил это в нижний колонтитул, чтобы обновить сервер, на котором пользователь все еще находится в сети с интервалом в 2 секунды.

<script>
  setInterval(function(){
   var ajaxurl = 'onlineupdate.php',
        data =  {'here':'here',
                 'username':<?php echo '\''.$_SESSION['username'].'\'';?>
        };
                $.post(ajaxurl, data, function (response) {
                  console.log(response);
                });

    },2000);
</script>

Вот онлайн-обновление. php

//onlineupdate.php
<?php
     include("connection.php");
     date_default_timezone_set("Asia/Calcutta");
     if(isset($_POST['here'])){
         $usernm = $_POST['username'];
         $date = date('Y-m-d H:i:s');
         $sql_status = "UPDATE users SET active_status='1', modified_date='$date' WHERE username='$usernm'";    
         $result_status = mysqli_query($con,$sql_status);
         echo $usernm;
         echo $result_status;
         exit;
     }
      if(isset($_POST['there'])){
         $usernm = $_POST['username'];
         $date = date('Y-m-d H:i:s');   
         $ac_sql_time="SELECT * FROM users WHERE username='$usernm'";
         $result=mysqli_query($con,$ac_sql_time);
         $rowData=mysqli_fetch_array($result);
         $last = $rowData["modified_date"];

         $datetime = date("Y-m-d H:i:s");
         $timestamp = strtotime($datetime);
         $time = $timestamp - (10);

         $datetime = date("Y-m-d H:i:s", $time);
         if($last<$datetime)
         {
             echo '1';
         }
         exit;
     }
?>

сообщество. php выдержка

function hookUser(user)
                {
                    console.log('HOOKED USER: '+user);
                     setInterval(
                         function()
                         {
                            var ajaxurl = 'checkonline.php',
                            data =  {'there':'here'
                                ,'username':user};
                             var button = document.getElementById('button_'+user);
                            $.post(ajaxurl, data, function (response) {
                                if(response=='1'){
                                    console.log(user+'ONLINE');
                                    button.innerHTML = 'ONLINE';
                                    button.className = 'btn btn-xs btn-success';
                                }else{
                                    console.log(user+'ONLINE');
                                    button.innerHTML = 'OFFLINE';
                                    button.className = 'btn btn-xs btn-danger';
                                }
                            });
                         },2000);
                }

Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...