Yêu cầu của bạn được thực hiện trong một chuỗi thực hiện duy nhất. Các nút cổ chai là gần như chắc chắn CPU, có bao giờ bạn thực sự xem curl đa mã chạy? ... nó cực kỳ cpu đói; bởi vì bạn không thực sự có đủ quyền kiểm soát đối phó với các yêu cầu. curl_multi giúp bạn có thể dàn xếp 1000 yêu cầu cùng một lúc, nhưng điều này không làm cho nó trở thành một ý tưởng hay. Bạn hầu như không có cơ hội sử dụng curl_multi một cách hiệu quả bởi vì bạn không thể kiểm soát luồng thực thi đủ mịn, chỉ cần phục vụ các socket và select() 'ing vào chúng sẽ chiếm rất nhiều việc sử dụng CPU cao mà bạn sẽ thấy dòng lệnh.
Lý do mức sử dụng CPU cao trong các tác vụ như vậy; PHP được thiết kế để chạy trong một phần nhỏ của một giây, làm mọi thứ nhanh nhất có thể. Nó thường không quan trọng như thế nào CPU được sử dụng, bởi vì nó cho một khoảng thời gian ngắn như vậy. Khi bạn kéo dài một nhiệm vụ như thế này, vấn đề trở nên rõ ràng hơn, chi phí phát sinh với mọi opcode sẽ hiển thị cho lập trình viên.
Tôi biết bạn đã nói rằng bạn không thể thay đổi việc triển khai, nhưng vẫn còn, để có câu trả lời hoàn chỉnh. một nhiệm vụ như vậy là xa phù hợp hơn cho Threading hơn đa curl, và bạn nên bắt đầu đọc http://php.net/pthreads, bắt đầu với http://php.net/Thread
Từ trái sang thiết bị của riêng họ trên một CPU nhàn rỗi thậm chí 1000 bài sẽ tiêu thụ càng nhiều CPU như curl_multi, điểm mấu chốt là bạn có thể kiểm soát chính xác mã có trách nhiệm tải xuống từng byte của phản hồi và tải lên từng byte của yêu cầu và nếu sử dụng CPU là một mối lo ngại, bạn có thể thực hiện quy trình "đẹp" bằng cách gọi một cách rõ ràng hoặc hạn chế sử dụng kết nối theo cách có ý nghĩa Ngoài ra, các yêu cầu của bạn có thể được phục vụ trong các chủ đề riêng biệt.
Tôi không đề xuất rằng 1000 chủ đề là việc cần làm, nó nhiều khả năng không phải là. Điều cần làm sẽ là thiết kế Stackable (xem tài liệu) có công việc là tạo và phục vụ một yêu cầu theo cách "đẹp", hiệu quả và thiết kế (xem ví dụ về nguồn mở rộng github/pecl) của người lao động để thực thi các yêu cầu mới được thiết kế ...
Nguồn
2012-12-14 05:39:26
Mở giới hạn tệp trên hộp linux đến khi nhìn trộm Tôi nghĩ (chạy 'ulimit -a' là người dùng bạn đang sử dụng, đó là trợ cấp của bạn). Bên cạnh đó, nút cổ chai có thể trở thành mạng. Tôi nghi ngờ CPU sẽ cung cấp cho một damn ... – Wrikken
Làm thế nào để bạn kiểm soát giới hạn tập tin mở? (Tôi không biết nhiều về điều này!) –
[stackoverflow cung cấp] (http://stackoverflow.com/questions/34588/how-do-i-change-the-number-of-open-files-limit-in -linux) – Wrikken