Tôi làm việc trên một ứng dụng web khá lớn và phần phụ trợ chủ yếu bằng PHP. Có một số vị trí trong mã mà tôi cần hoàn thành một số tác vụ, nhưng tôi không muốn làm cho người dùng chờ kết quả. Ví dụ: khi tạo một tài khoản mới, tôi cần gửi cho họ một email chào mừng. Nhưng khi họ nhấn nút 'Hoàn tất đăng ký', tôi không muốn khiến họ đợi cho đến khi email thực sự được gửi, tôi chỉ muốn bắt đầu quá trình và trả lại tin nhắn cho người dùng ngay lập tức.
Cho đến bây giờ, ở một số nơi tôi đã sử dụng cảm giác như hack với exec (). Về cơ bản làm những việc như:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
Điều này có vẻ hiệu quả, nhưng tôi tự hỏi liệu có cách nào tốt hơn không. Tôi đang xem xét việc viết một hệ thống xếp hàng các tác vụ trong bảng MySQL và một tập lệnh PHP chạy dài riêng biệt truy vấn bảng đó một lần trong một giây và thực hiện bất kỳ tác vụ mới nào mà nó tìm thấy. Điều này cũng có lợi thế là cho phép tôi phân chia nhiệm vụ giữa một số máy công nhân trong tương lai nếu tôi cần.
Tôi có phát minh lại bánh xe không? Có giải pháp nào tốt hơn hack exec () hay hàng đợi MySQL không?