Hy vọng tôi có thể giải thích điều này đủ tốt. Tôi đang làm việc để tạo ra một PHP library to handle ajax requests through PHP theo cách hướng đối tượng. Tôi hiện đang cân nhắc một cách tốt để thực hiện một giải pháp bỏ phiếu dài nhưng tôi tò mò về điều gì đó.Cuộc thăm dò dài với PHP trên Apache
Apache không xử lý việc giữ nhiều kết nối mở rất tốt. Mô hình theo yêu cầu giúp Apache không hiệu quả cao đối với việc bỏ phiếu dài. Sử dụng máy chủ như nginx và lighttpd xử lý các luồng này tốt hơn rất nhiều trong thư viện, tôi dự định triển khai các chức năng khác nhau được tối ưu hóa cho các máy chủ cụ thể có sẵn từ một cuộc gọi hàm đơn. Trong trường hợp của Apache, điều đó xảy ra để giữ một thị phần khổng lồ cho các ứng dụng PHP, tôi cần một giải pháp tốt hơn.
Có cách nào để đặt yêu cầu đến tạm dừng/tạm dừng và tiếp tục xử lý các yêu cầu khác cho đến khi tôi sẵn sàng kích hoạt lại yêu cầu đó không?
Tôi không chắc liệu điều đó có hợp lý không hay liệu tôi có đi đúng hướng hay không. Một giải pháp có thể có mà SO đề xuất cho việc bỏ phiếu dài trong PHP trên một máy chủ Apache là gì?
tại sao bạn tạm dừng xử lý trên máy chủ? điều đó sẽ khiến người dùng của bạn phải chờ đợi rất nhiều? – Joseph
Với Apache, nó sử dụng một mô hình theo yêu cầu để yêu cầu trang ban đầu trong một ứng dụng sử dụng một luồng, và sau đó yêu cầu ajax (được gọi là DOM được tải) sẽ sử dụng một luồng riêng biệt. Vấn đề là cố gắng lưu lượng cao sẽ sinh ra hàng nghìn luồng và cuối cùng là vô hiệu hóa máy chủ. –
Chúng tôi gặp vấn đề tương tự, sau khi bật tải trang ajax/PHP dài bắt đầu một cách ngẫu nhiên (cca mỗi 4-5 lần tải) mất quá nhiều thời gian ... cho bây giờ và chỉ cho các thông báo tôi giải được nó bằng NOT sleep() trong PHP theo bất kỳ cách nào và chuyển chức năng timewait sang javascript, vì vậy bây giờ javascript đang yêu cầu thực thi PHP mới, ví dụ: 10 giây nhưng tải trang dường như là OK ngay bây giờ. –