Hướng dẫn dùng parallal trong PHP
answer 21 tôi sử dụng Tôi không thích Tôi không thích các Tôi không thích chưa bao giờ chơi với gearman ... 21 hữu ích 5 bình luận chia sẻ answer 14 Tôi đoán chúng ta có 3 lựa chọn ở đó: A. Đa luồng: PHP không hỗ trợ đa luồng nguyên bản. Nhưng có một phần mở rộng PHP (thử nghiệm) được gọi là pthreads ( https://github.com/krakjoe/pthreads ) cho phép bạn làm điều đó. B. Đa quy trình: Điều này có thể được thực hiện theo 3 cách:
C. Xử lý song song phân tán: Làm thế nào nó hoạt động:
Một số động cơ MQ:
Có thể tìm thấy nhiều hơn trong số chúng tại đây: http://queues.io 14 hữu ích 3 bình luận chia sẻ answer 4 Nếu ứng dụng của bạn sẽ chạy trong môi trường unix / linux, tôi khuyên bạn nên sử dụng tùy chọn forking. Về cơ bản, trẻ em chơi để làm cho nó hoạt động. Tôi đã sử dụng nó cho trình quản lý Cron và có mã để nó hoàn nguyên về đường dẫn mã thân thiện với Windows nếu fork không phải là một tùy chọn. Các tùy chọn chạy toàn bộ tập lệnh nhiều lần, như bạn đã nêu, làm tăng thêm khá nhiều chi phí. Nếu tập lệnh của bạn nhỏ, nó có thể không thành vấn đề. Nhưng bạn có thể sẽ quen với việc xử lý song song trong PHP theo cách bạn chọn. Và lần tới khi bạn có một công việc sử dụng 200mb dữ liệu thì đó rất có thể là một vấn đề. Vì vậy, tốt hơn hết bạn nên học một cách mà bạn có thể gắn bó. Tôi cũng đã thử nghiệm Gearman và tôi rất thích nó. Có một vài điều cần phải suy nghĩ nhưng về tổng thể, nó cung cấp một cách rất tốt để phân phối các tác phẩm đến các máy chủ khác nhau chạy các ứng dụng khác nhau được viết bằng các ngôn ngữ khác nhau. Bên cạnh việc thiết lập nó, thực sự sử dụng nó từ bên trong PHP, hoặc bất kỳ ngôn ngữ nào khác cho vấn đề đó, ... một lần nữa ... trẻ em lại chơi. Nó rất có thể là quá mức cần thiết cho những gì bạn cần làm. Nhưng nó sẽ mở ra cho bạn những khả năng mới khi nói đến việc xử lý dữ liệu và công việc, vì vậy tôi khuyên bạn nên thử Gearman vì thực tế đó một mình. 4 hữu ích 0 bình luận chia sẻ answer 3 Dưới đây là tóm tắt về một số tùy chọn để xử lý song song trong PHP. AMPCheckout Amp - Đồng thời không đồng bộ được thực hiện đơn giản - đây có vẻ là thư viện PHP hoàn thiện nhất mà tôi từng thấy để xử lý song song. Lớp quy trình của PeecLớp này đã được đăng trong các bình luận của hàm execute () của PHP và cung cấp một điểm khởi đầu đơn giản thực sự để tạo các quy trình mới và theo dõi chúng. Thí dụ:
Các tùy chọn khác được so sánhNgoài ra còn có một bài viết tuyệt vời về Xử lý không đồng bộ hoặc đa nhiệm trong PHP giải thích những ưu và nhược điểm của các phương pháp tiếp cận khác nhau:
Người gác cửaSau đó, cũng có hướng dẫn đơn giản này được gói gọn trong một thư viện nhỏ có tên là Doorman . Hy vọng những liên kết này cung cấp một điểm khởi đầu hữu ích để nghiên cứu thêm. 3 hữu ích 0 bình luận chia sẻ answer 3 Trước hết, câu trả lời này dựa trên hệ điều hành linux env. Tuy nhiên, một phần mở rộng pecl khác cũng song
song, bạn có thể cài đặt nó bằng cách phát hành
sau đó xem đầy đủ ý chính của ví dụ: https://gist.github.com/krakjoe/0ee02b887288720d9b785c9f947f3a0a hoặc url trang web chính thức của php: https://www.php.net/manual/vi/book.parallel.php 3 hữu ích 1 bình luận chia sẻ answer 2 Tôi thích executive () và gearman hơn. execute () dễ dàng và không có kết nối và ít tốn bộ nhớ hơn. gearman cần một kết nối ổ cắm và nhân viên nên nhớ một số bộ nhớ. Nhưng gearman linh hoạt hơn và nhanh hơn thi hành (). Và điều quan trọng nhất là nó có thể triển khai worker trong máy chủ khác. Nếu công việc tốn nhiều thời gian và tài nguyên. Tôi đang sử dụng gearman trong dự án hiện tại của mình. 2 hữu ích 0 bình luận chia sẻ answer 2 Tôi sử dụng pnctl của PHP - điều đó là tốt miễn là bạn biết bạn làm gì. Tôi hiểu tình huống của bạn nhưng tôi không nghĩ việc hiểu mã của chúng ta là điều gì đó khó khăn, chúng ta chỉ cần có ý thức hơn bao giờ hết khi triển khai hàng đợi JOB hoặc quy trình song song. Tôi cảm thấy miễn là bạn viết mã nó một cách hoàn hảo và đảm bảo quy trình hoàn hảo, bạn nên ghi nhớ QUY TRÌNH PARALLEL khi bạn triển khai. Nơi bạn có thể mắc sai lầm:
Hãy xem ví dụ này - https://github.com/rakesh-sankar/Tools/blob/master/PHP/fork-parallel-process.php . Hy vọng nó giúp. 2 hữu ích 0 bình luận chia sẻ answer 1 Phương pháp được mô tả trong 'Xử lý song song dễ dàng trong PHP' là hết sức đáng sợ - nguyên tắc là OK - nhưng việc triển khai thì sao ??? Như bạn đã chỉ ra, curl_multi_ fns cung cấp một cách tốt hơn nhiều để triển khai phương pháp này.
Có, bạn có thể không cần ngăn xếp HTTP máy khách và máy chủ để hoàn thành công việc - nhưng trừ khi bạn đang làm việc cho Google, thời gian phát triển của bạn đắt hơn nhiều so với chi phí phần cứng của bạn - và có rất nhiều công cụ để quản lý HTTP / phân tích hiệu suất - và có một tiêu chuẩn xác định bao gồm những thứ như thông báo trạng thái và xác thực. Phần lớn cách bạn triển khai giải pháp phụ thuộc vào mức độ toàn vẹn giao dịch mà bạn yêu cầu và liệu bạn có yêu cầu xử lý theo thứ tự hay không. Trong số các cách tiếp cận bạn đề cập, tôi khuyên bạn nên tập trung vào phương thức yêu cầu HTTP bằng cách sử dụng curl_multi_. Nhưng nếu bạn cần kiểm soát giao dịch tốt / để phân phối đơn hàng thì bạn chắc chắn nên chạy một trình nền môi giới giữa nguồn thông báo và các tác nhân xử lý (có một máy chủ luồng đơn được viết tốt phù hợp để sử dụng làm khung cho nhà môi giới ở đây ). Lưu ý rằng các tác nhân xử lý nên xử lý một thông báo tại một thời điểm. Nếu bạn cần một giải pháp có khả năng mở rộng cao, thì hãy xem xét một hệ thống xếp hàng tin nhắn thích hợp chẳng hạn như RabbitMQ . HTH C. 1 hữu ích 0 bình luận chia sẻ answer 1 Sử dụng song song PHP gốc (7.2+) , tức là:
(BTW, bạn sẽ cần phải thực hiện theo đường dẫn cứng để cài đặt PHP với hỗ trợ ZTS, sau đó kích hoạt song song. Tôi khuyên bạn nên làm điều đó bằng phpbrew.) 1 hữu ích 0 bình luận chia sẻ |