2010-09-15 23 views
6

Tôi biết có các công nghệ máy chủ Comet thực hiện điều này nhưng tôi muốn viết một cái gì đó đơn giản và được trồng tại nhà.Trình kích hoạt MySQL + thông báo kết nối Apache/PHP bỏ phiếu dài

Khi bản ghi được chèn vào bảng MySQL, tôi muốn nó bằng cách nào đó truyền đạt dữ liệu này đến một loạt các kết nối Apache được thăm dò ý kiến ​​dài bằng cách sử dụng PHP (hoặc bất kỳ thứ gì). Vì vậy, nhiều người đang "nghe" thông qua trình duyệt của họ và thứ hai MySQL INSERT xảy ra, nó được gửi đến trình duyệt của họ và thực hiện.

Cách dễ dàng là yêu cầu tập lệnh PHP thăm dò ý kiến ​​cơ sở dữ liệu MySQL, nhưng điều này không thực sự đẩy từ máy chủ và đưa ra một số truy vấn cơ sở dữ liệu không được chấp nhận. Tôi muốn nhận dữ liệu đó từ MySQL đến kết nối bỏ phiếu dài về cơ bản mà không cần truy vấn người nghe.

Bất kỳ ý tưởng nào về cách triển khai tính năng này?

Trả lời

0

Đây là điều mà tôi cũng đang tìm kiếm trong nhiều năm. Tôi đã không tìm thấy bất kỳ chức năng nào mà máy chủ SQL đẩy ra một thông báo về INSERTS, DELETE và CẬP NHẬT.

TRIGGERS có thể chạy SQL trên những sự kiện này, nhưng điều đó không được sử dụng ở đây.

Tôi đoán bạn phải xây dựng hệ thống của riêng mình. Bạn có thể dễ dàng phát một UDP từ PHP (Example in first comment), vấn đề là PHP đang chạy ở phía máy chủ và các máy khách là tĩnh.

Tôi đoán là bạn có thể làm một Java Applet chạy trên máy khách, nghe tin nhắn UDP và sau đó kích hoạt cập nhật của trang.

Đây là chỉ một vài suy nghĩ trong khoảng thời gian viết ...

+0

Có lẽ trình kích hoạt có thể ghi vào thứ gì đó như memcached và PHP có thể thăm dò ý kiến ​​đó? – phazei

+0

PHP tĩnh và không "chạy" trong nền. Có một số thủ thuật trong cuốn sách về cách làm cho nó xuất hiện như là một "chủ đề", nhưng sau đó đến vấn đề tiếp theo, cập nhật trang khách hàng. Tôi sẽ nói rằng việc bỏ phiếu phải được thực hiện bởi AJAX. Có thể đủ để thăm dò ý kiến ​​cho ngày sửa đổi cuối cùng (được viết bởi trình kích hoạt). Nếu nó mới hơn, hãy tải lại trang. –

2

Tôi đã cố gắng tất cả các loại ý tưởng cho một giải pháp cho điều này là tốt và cách duy nhất để đưa ra các điểm bỏ phiếu của các truy vấn sql là thăm dò ý kiến ​​một tập tin thay thế. Nếu điền bằng 0 thì tiếp tục lặp lại. Nếu tệp bằng 1 có các truy vấn sql chạy vòng lặp và gửi cho người dùng. Nó có thêm một mức độ phức tạp khác nhưng tôi nghĩ nó có nghĩa là ít hoạt động hơn bởi mysql nhưng cũng tương tự với apache hoặc daemon lặp lại bao giờ. Bạn cũng có thể gửi lệnh đến một daemon "sao chổi" phong cách nhưng nó sẽ ngã ba và vòng lặp trên mỗi yêu cầu cũng từ những gì tôi đã thấy trên ổ cắm làm việc như vậy hy vọng ai đó sẽ tìm thấy một giải pháp này.

0

MySQL có lẽ không phải là công cụ phù hợp cho vấn đề này. Regilero đề nghị chuyển đổi DB của bạn, nhưng một giải pháp dễ dàng hơn có thể là sử dụng một cái gì đó như redis có tính năng pub/sub.

http://redis.io/topics/pubsub

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