2011-12-22 36 views
6

Chúng tôi có một ứng dụng web lớn được xây dựng trên PHP. Ứng dụng này cho phép lên lịch các bài đăng trên tường và bài đăng trên tường và có các email được lên lịch xuất phát từ máy chủ.Sự khác biệt giữa việc sử dụng Hàng đợi Tin nhắn so với Công việc Cron Đồng bằng với PHP

Theo 'được lên lịch', tôi có nghĩa là đây là các tập lệnh PHP được lên lịch chạy vào thời gian cụ thể bằng cách sử dụng cron. Có khoảng 7 tệp PHP thực hiện các công việc trên.

Tôi đã nghe về Hàng đợi tin nhắn. Bất cứ ai có thể giải thích nếu hàng đợi tin nhắn là phù hợp nhất trong kịch bản này? Hàng đợi tin nhắn có thực thi các tập lệnh PHP không? hay chúng ta cần cấu hình điều này hoàn toàn khác nhau? Ưu điểm/nhược điểm là gì?

+0

22 Chế độ xem. Bất kỳ ai? Có câu trả lời nào không? –

Trả lời

5

Sử dụng Crontab để làm vụ không đồng bộ (không đồng bộ từ mã PHP của bạn) là một cách tiếp cận cơ bản mà sử dụng một người quản lý hàng đợi công việc/nhiệm vụ đang là một công phu và cung cấp cho bạn kiểm soát nhiều hơn, quyền hạn và khả năng mở rộng/độ đàn hồi .

Crontab rất dễ giải quyết nhưng không cung cấp nhiều chức năng. Nó là tốt nhất cho công việc theo lịch trình hơn là cho các nhiệm vụ không đồng bộ.

Mặt khác, việc triển khai hàng đợi Công việc (và message broker) của nó cần nhiều thời gian hơn. Bạn phải chọn đúng công cụ trước rồi tìm hiểu cách triển khai chúng trong mã PHP của bạn. Nhưng đây là cách để đi vào năm 2011.

Cảm ơn Chúa, tôi không làm PHP nhưng đã chơi xung quanh với Celery (cùng với RabbitMQ) trên Python dự án; Tôi chắc chắn bạn có thể tìm thấy một cái gì đó tương tự trong thế giới PHP.

+0

Cảm ơn, Stan! Hàng đợi tin nhắn có xâm lấn hay không. Có nghĩa là, việc thực hiện hàng đợi thông báo yêu cầu thay đổi mã PHP trong ứng dụng? –

+0

_A priori_ nó không phải là. ** nhưng ** tham số của hàm bị trễ phải được tuần tự hóa và đôi khi bạn có thể có một số bất ngờ vì một số đối tượng không được xử lý tốt. – Stan

+0

yay. Đây là năm 2013 và vẫn là quy tắc tương tự là hợp lệ – om471987

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