Tôi đang làm việc trên một ứng dụng sử dụng API MWS của Amazon được viết chủ yếu bằng PHP. Ứng dụng này cho phép người bán Amazon đăng ký, cung cấp một số thông tin người bán Amazon và ứng dụng sau đó bắt đầu tải xuống các đơn đặt hàng của người dùng này từ Amazon đặt chúng vào cơ sở dữ liệu MySQL.Cách hiệu quả nhất để chạy các hàm không đồng bộ trong PHP là gì?
Tôi đã xây dựng các phương pháp để đồng bộ hóa dữ liệu chính xác với cơ sở dữ liệu bằng cách sử dụng tập lệnh có nhiều chức năng nhưng nhận thấy quá trình này mất quá nhiều thời gian. Kịch bản này chỉ đơn giản là vòng lặp thông qua tất cả người dùng trong cơ sở dữ liệu và lặp lại tất cả các đơn đặt hàng tại một thời điểm. Ngay bây giờ, chỉ với 5 người dùng thử nghiệm, thời gian có thể thực hiện được nhưng tôi đang tìm một phương pháp có thể mở rộng hơn. Hãy suy nghĩ về 500 người dùng tất cả chạy đồng thời một lúc. WAY quá lâu!
Tôi khá mới đối với PHP và đặc biệt là chạy các quá trình không đồng bộ từ nó. Cách duy nhất tôi đã tìm thấy rằng tôi có thể làm điều này là để có một kịch bản starter mà tìm thấy tất cả người dùng trong cơ sở dữ liệu và sinh ra một kịch bản đồng bộ cho mỗi người dùng sau đó phát hành nó. Tôi không thích ý tưởng này bởi vì nếu tôi đã có hơn 500 người dùng, đồng bộ hàng đêm của tôi sẽ bao gồm 500 trường hợp sinh sản của tập lệnh PHP này.
Có ai đã làm điều gì đó tương tự như trước đây không? Nếu vậy, tôi muốn nghe cách tốt nhất để làm cho đồng bộ hóa này hiệu quả hơn.
Tôi chưa bao giờ nghe nói về lớp HTTPRequestPool.Tuy nhiên, từ điều này tôi có thể tìm ra cách để làm cho nó gửi các yêu cầu HTTP không đồng bộ nhưng tôi cũng cần xử lý từng kết quả mà tôi lấy từ các kết quả này một cách riêng biệt. Điều này có thể được thực hiện? –
Tôi tin như vậy. Bạn đã đọc tài liệu chưa? Đặc biệt kiểm tra phương thức "getFinishedRequests" - http://www.php.net/manual/en/function.httprequestpool-getfinishedrequests.php – rICh