2010-05-11 50 views

Trả lời

1

Bạn sẽ phải liên tục thăm dò ý kiến ​​một trang có giá trị từ cơ sở dữ liệu.

+0

Không nhất thiết. Có sẵn các kỹ thuật đẩy. –

+1

@RobertHarvey Chẳng hạn như? bạn có thể cho như vậy không? –

2

Móc một quy trình được lưu trữ đặc biệt vào cơ sở dữ liệu của bạn để cảnh báo ứng dụng của bạn sau khi sửa đổi. Bạn sẽ cần một mô-đun tùy chỉnh và các câu lệnh kích hoạt đúng.

Tùy chọn khác của bạn là bỏ phiếu.

+0

Làm cách nào để cảnh báo ứng dụng, trên trình duyệt của khách hàng? –

+0

Ứng dụng này có hai phần: trên trình duyệt và trên máy chủ web. Dịch vụ web phụ trợ chịu trách nhiệm nói chuyện với cơ sở dữ liệu trừ khi người hỏi đang sử dụng kiểu .0000001% để SQL nói chuyện với trình duyệt vào cơ sở dữ liệu. –

+0

+1 cho một cách để ngăn chặn "bỏ phiếu cơ sở dữ liệu", ngay cả khi không ngăn chặn "khách hàng đến máy chủ bỏ phiếu" –

5

Máy chủ (cơ sở dữ liệu/web) không thể khởi tạo kết nối - chỉ có khách hàng mới có thể. Vì vậy, bạn sẽ phải thăm dò ý kiến ​​cơ sở dữ liệu cho đến khi có một bản cập nhật. Bạn có thể tạo một dịch vụ web để kiểm tra cơ sở dữ liệu và jQuery sử dụng nó.

Chỉnh sửa: Tôi đã sửa. Có thể giữ kết nối AJAX mở cho đến khi máy chủ "đẩy" dữ liệu vào nó. Xem: http://en.wikipedia.org/wiki/Reverse_Ajax

Và dường như nó thực sự đang bỏ phiếu: http://en.wikipedia.org/wiki/Push_technology#Long_polling. Nếu máy chủ không có bất kỳ dữ liệu nào để gửi, nó sẽ giữ kết nối mở cho đến khi nó hoạt động. Nó không phải là công nghệ đẩy "thuần túy", vì máy khách không có cổng nghe mà máy chủ kết nối. Tuy nhiên, hiệu quả là tương tự.

Chỉnh sửa 2: Quay lại để trả lời câu hỏi của bạn ... Bạn sẽ phải chọn cách "thăm dò ý kiến" dịch vụ web. Các dịch vụ web sau đó sẽ phải kiểm tra cơ sở dữ liệu để xem nếu có bản cập nhật. Kiểm tra cơ sở dữ liệu để cập nhật có thể là điều khó khăn nhất và thực sự phụ thuộc vào yêu cầu của bạn. Bạn có thể chạy một truy vấn SQL để xem có thay đổi gì không, nhưng làm sao bạn biết? Bạn sẽ cần một số loại tham số (thường là một ngày) để so sánh. Nếu làm sai, bạn có thể bỏ lỡ một số cập nhật hoặc có nhiều lần truy cập cho một bản cập nhật. Những gì Autocracy nói sẽ là một cách tốt để nhận được thông báo cập nhật. Bạn có thể giữ danh sách đó trong cơ sở dữ liệu, trong bộ nhớ, vv và xóa nó khi máy khách nhận được các bản cập nhật.

0

Về cơ bản, bạn sẽ phải liên tục thăm dò ý kiến ​​máy chủ để thay đổi DB. Máy chủ không thể thực hiện cuộc gọi đến máy khách, vì vậy máy khách sẽ chỉ phải liên tục hỏi máy chủ nếu có thay đổi.

+0

Xem http://en.wikipedia.org/wiki/Reverse_Ajax –

1

Tôi muốn đề xuất tạo trang HTML sử dụng setIntreval() để liên tục thực hiện cuộc gọi AJAX đến tập lệnh PHP truy vấn cơ sở dữ liệu của bạn. Bạn có thể sử dụng JSON và PEAR để làm cho công việc dễ dàng hơn một chút.

Links tham khảo:

+0

OK. Cảm ơn rất nhiều. Phương pháp của bạn hoạt động hoàn hảo! Chỉ không thể đặt khoảng thời gian quá thấp hoặc có vấn đề với trình đọc dữ liệu mở/đóng. –

11

Những gì bạn mô tả là thông tục được gọi là Comet lập trình. Comet mô tả một nhóm các kỹ thuật để đẩy nội dung đến một trang web với kết nối HTTP liên tục.

Việc đẩy sẽ được bắt đầu bằng cách sử dụng kết hợp thủ tục kích hoạt/lưu trữ trong máy chủ cơ sở dữ liệu. Bằng cách đó, nó xảy ra bất kể nơi cập nhật dữ liệu đến từ đâu.

+1

Bạn đã hiểu. Wikipedia (http://en.wikipedia.org/wiki/Comet_%28programming%29): Comet ... được biết đến bởi một số tên khác, bao gồm Ajax Push, Reverse Ajax, Hai chiều-web, HTTP Streaming và HTTP đẩy máy chủ trong số những người khác. –

+0

Điều này nghe rất hay. Tôi sẽ phải nhìn vào nó. Cảm ơn vì lời khuyên! –

+2

ví dụ: http://www.ape-project.org/ – choise

3

Im làm gần như cùng một điều với một cuộc trò chuyện, tải lại một kịch bản php mỗi xx giây

Trông như thế này: thay thế j với $ nếu không sử dụng jquery.noconflict ..

j(".chatref").everyTime(3000,function(i){ 
    j.ajax({ 
     url: "chatx.php", 
     cache: false, 
     success: function(updated){ 
      j(".chatref").html(updated); 
      ...do stuff.. 
     } 
    }); 

Đây là một phương pháp rất tốt đẹp tôi nghĩ :) nếu bạn muốn gửi vars để chatx.php chỉ cần thêm ? php & x = 1 & y = 2?>

Các vấn đề liên quan