Извлечение данных из базы данных с помощью Pusher для создания большого приложения в режиме реального времени останавливает браузер - PullRequest
0 голосов
/ 14 апреля 2020

Когда я использую Pusher на тестовом примере, он работает отлично; все содержимое отображается в разных браузерах в режиме реального времени.

Однако, когда я помещаю один и тот же код в большое приложение LAMP Stack, это замедляет работу браузеров и в конечном итоге останавливает их. Браузеры сначала отображают медленно вращающийся серый кружок на вкладке, затем браузер не отвечает. Чем больше данных, тем медленнее становится браузер, поэтому, если я оставлю комментарий, это займет некоторое время, а затем пройдет. Если я опубликую изображение и комментарий, через go пройдет больше времени, затем браузер остановится. И, если я опубликую видео с комментарием, он не go до конца. В конце концов он замораживает мой P C.

Вот мой код на тестовом примере:

index. php

<!DOCTYPE html>
<body>

<form id="comment_form" class='input-group form-row' action="comment_add1.php" method="post" enctype="multipart/form-data">
  <div class="form-group">
    <textarea name="comment" id="comment" class="form-control" placeholder="Enter Comment" rows="5" cols="70"></textarea>
  </div>

  <div class="input-group-prepend">
   <input type="hidden" name="comment_id" id="comment_id" value="0" />
   <input type="submit" name="submit" id="submit" class="submit btn btn-info" value="Submit" form="comment_form" />
  </div>
</form>

<div id="display_comment"></div>
<div id="comment_message"></div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://js.pusher.com/5.1/pusher.min.js"></script>

<script>
$(document).ready(function(){

  // Add comment
 $(document).on('click change', '.submit', function() {

if ($(this).is('.submit')) {

  $.ajax({
   url:"comment_add1.php",
   method:"POST",
   data: new FormData(this),
   contentType: false,
   processData: false,
   success:function(data)
   {
    if(data.error != '') {
     $('#comment_form')[0].reset();
     $('#comment_message').html(data.error);
     $('#comment_id').val(comment_id);
    }
   }
  });

 location.reload();

      $(this).closest('form').submit();
      e.stopPropagation();
    } else {
      return false;
    }

});


 // Fetch comment
 function load_comment(){
        $.ajax({
         url:"comment_fetch1.php",
         method:"POST",
         success:function(data){
          $('#display_comment').html(data);
         }
        })
 };

 load_comment();

/*=======================================
=            Pusher Frontend            =
=======================================*/

var pusher = new Pusher(APP_KEY, {
  cluster: 'us3',
  forceTLS: true
});

var channel = pusher.subscribe('my-channel');
channel.bind('my-event', function(data) {
 load_comment(data);
});

/*=====  End of Pusher Frontend  ======*/

// End of (document).ready(function){}
}); 
</script>

</body>
</html>

comment_fetch. php

<code><?php

$connect = new PDO('mysql:host=localhost;dbname=db_testcase_pusher', 'root', '');

$query = "SELECT * FROM tbl_comment 
ORDER BY comment_id DESC
";

$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$output = '';
$date = '';
$comment = '';

foreach($result as $row)

{
 $output .= '
 <div class="panel panel-default">
  <div class="panel-heading" <i>'.$row["date"].'</i></div>
  <div class="panel-body"><pre>'.$row["comment"].'
'; } echo $ output; / * ============================== = Pusher Backend = ============== ================ * / require ('pusher_config. php'); требуют __DIR__. '/Vendor/autoload.php'; $ options = array ('cluster' => 'us3', 'useTLS' => true); $ pusher = new Pusher \ Pusher (APP_KEY, APP_SECRET, APP_ID, $ options); $ data = ''; $ pusher-> trigger ('my-channel', 'my-event', $ data); / * ===== Конец Pusher Backend ====== * /?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...