Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sự khác biệt giữa ajax bình thường và bỏ phiếu dài

Vì câu hỏi ban đầu của bạn là sự khác biệt giữa hai kỹ thuật là gì, tôi sẽ bắt đầu với điều này:

Bỏ phiếu AJAX

Sử dụng AJAX thăm dò để cập nhật một trang có nghĩa là bạn gửi một yêu cầu trong một khoảng thời gian xác định đến máy chủ, giao diện này sẽ giống như sau:

Máy khách gửi một yêu cầu đến máy chủ và máy chủ sẽ phản hồi ngay lập tức.

Một ví dụ đơn giản (sử dụng jQuery) sẽ như thế này:

setInterval(function(){
    $('#myCurrentMoney').load('getCurrentMoney.php');
}, 30000);

Vấn đề với điều này là, điều này sẽ gây ra rất nhiều yêu cầu vô ích vì không phải lúc nào cũng có những thứ mới theo mọi yêu cầu.

Cuộc thăm dò dài AJAX

Sử dụng AJAX long polling sẽ có nghĩa là máy khách gửi yêu cầu đến máy chủ và máy chủ đợi dữ liệu mới sẵn có trước khi trả lời. Cái này sẽ giống như thế này:

Máy khách gửi yêu cầu và máy chủ phản hồi "bất thường". Ngay sau khi máy chủ phản hồi, máy khách sẽ gửi một yêu cầu mới đến máy chủ.

Phía khách hàng sẽ giống như sau:

refresh = function() {
    $('#myCurrentMoney').load('getCurrentMoney.php',function(){
        refresh();
    });
}

$(function(){
    refresh();
});

Điều này sẽ làm chỉ là tải getCurrentMoney.php đầu ra của phần tử tiền hiện tại và ngay khi có lệnh gọi lại, hãy bắt đầu một yêu cầu mới.

Ở phía máy chủ, bạn thường sử dụng một vòng lặp. Để giải quyết câu hỏi của bạn làm thế nào máy chủ sẽ biết, đó là các ấn phẩm mới:bạn chuyển dấu thời gian của ấn phẩm mới nhất cho ứng dụng khách có sẵn cho máy chủ hoặc bạn sử dụng thời gian "bắt đầu bỏ phiếu dài" làm indactor:

<?
$time = time();

while ($newestPost <= $time) {
    // note that this will not count as execution time on linux and you won't run into the 30 seconds timeout - if you wan't to be save you can use a for loop instead of the while
    sleep(10000);
    // getLatestPostTimestamp() should do a SELECT in your DB and get the timestamp of the latest post
    $newestPost = getLatestPostTimestamp();
}

// output whatever you wan't to give back to the client
echo "There are new posts available";

Tại đây, chúng tôi sẽ không có các yêu cầu "vô ích".




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Yii2 - tham gia trái với nhiều điều kiện

  2. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Không có hoạt động nào được phép sau khi kết nối đóng

  3. Làm cách nào để tạo một dạng xem trong MySQL?

  4. Làm cách nào để UTF-8 hoạt động trong các ứng dụng web Java?

  5. Nhân rộng MySQL để có tính khả dụng cao