2011-01-29 24 views
7

Tôi luôn thích ý tưởng bỏ phiếu dài; trên máy chủ phát triển của tôi, tôi đã chơi với nhiều thông báo/hệ thống bài đăng mới, mỗi hệ thống sử dụng javascript để giữ kết nối và 'chờ' cho một số loại phản hồi. Tôi đã luôn luôn có một vấn đề với nhiều triển khai này, tất cả họ liên quan đến việc lặp lại lặp đi lặp lại các máy chủ mySQL để kiểm tra các hàng mới. Một máy chủ chuyên dụng cho các yêu cầu bỏ phiếu dài là một khả năng, nhưng có vẻ như rất lãng phí cho việc thăm dò liên tục (khoảng 3 giây có vẻ phổ biến) một máy chủ cơ sở dữ liệu cho mọi khách hàng. Đó là một nguồn tài nguyên khổng lồ cho một thứ gì đó tương đối không đáng kể.Cuộc thăm dò ý kiến ​​của PHP, mà không cần truy cập cơ sở dữ liệu quá mức

Có cách nào không?

Trả lời

4

Nếu vấn đề cụ thể của bạn là bạn đang cố gắng tránh thông báo sự kiện thông qua cơ sở dữ liệu, có thể bạn đang xem xét sử dụng bộ nhớ hoặc ẩn dụ dùng chung.

Thay vì liên tục bỏ phiếu cho cơ sở dữ liệu, thay vào đó bạn sẽ theo dõi bộ nhớ dùng chung. Khi một cái gì đó ghi vào db (tôi giả định một số loại hàng đợi tin nhắn), bạn có thể gắn cờ sự kiện thông qua bộ nhớ dùng chung. Mã nghe sẽ phát hiện ra điều này và chỉ sau đó thiết lập kết nối db để truy xuất thông báo. Ngoài ra, bạn có thể sử dụng bộ nhớ dùng chung để thay thế hoàn toàn việc sử dụng cơ sở dữ liệu.

Các tài liệu tham khảo cho các semaphore php và chức năng bộ nhớ chia sẻ là ở đây - http://uk.php.net/manual/en/ref.sem.php

0

WebSockets

...

Khi nó thực sự hỗ trợ đầy đủ;)

+0

Tính năng bỏ phiếu của máy chủ không nhiều mà là vấn đề lưu trữ và truy xuất dữ liệu ở phía máy chủ. – Harold

+0

Sau đó, tôi chắc chắn sẽ đi với gợi ý của seppo0010. Đoán đó là những gì tôi nhận được chỉ là liếc qua câu hỏi;) –

+0

Cảm ơn sự hỗ trợ nào! – Harold

5

tôi sẽ sử dụng một số NoSQL để thông báo có dữ liệu mới. Redispub/subblocking list.

Bạn cũng có thể sử dụng, ví dụ như memcache và tạo khóa mới khi dữ liệu khả dụng.

+0

Thats thực sự là một ý tưởng tuyệt vời. Tôi đã hoàn toàn quên mất memcache, vì không nhiều ứng dụng tôi phát triển sẽ được hưởng lợi từ nó. Đọc các biến từ memcache chắc chắn sẽ nhanh hơn, cảm ơn vì điều đó! – Harold

+0

Bạn vui lòng cung cấp một ví dụ? Tôi không bao giờ sử dụng nó. Cảm ơn. – moderns

0

dữ liệu bộ nhớ cache, tôi thích một từ Zend Server, nó giảm đáng kể kéo từ cơ sở dữ liệu

-1

có thể nhìn vào có một bộ phim flash trong nền mà duy trì một kết nối liên tục với máy chủ sử dụng socket. Java cũng hỗ trợ các ổ cắm vì vậy cũng có thể là một applet java được nhúng trong trang của bạn.

+0

Đó là không có gì để làm với những gì tôi hỏi. – Harold

0

Bất cứ khi nào bạn Chèn hoặc cập nhật cơ sở dữ liệu của bạn tạo ra một bộ nhớ cache cho rằng lĩnh vực cơ sở dữ liệu. Bạn có thể sử dụng bất kỳ bộ nhớ cache dựa trên PHP đơn giản nào (http://hycus.com/2011/03/31/hcache-a-cache-system-for-php/).

Sau đó, bạn có thể thăm dò ý kiến ​​bộ nhớ cache liên tục bằng cách sử dụng JQUERY.

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