Đóng cửa trong php
Trong khi xây dựng ứng dụng web của mình, bạn có thể có một số tác vụ, chẳng hạn như phân tích cú pháp và lưu trữ tệp CSV đã tải lên, mất quá nhiều thời gian để thực hiện trong một yêu cầu web thông thường. Rất may, Laravel cho phép bạn dễ dàng tạo queued job có thể được xử lý ở chế độ nền. Bằng cách chuyển các tác vụ tốn nhiều thời gian vào một hàng đợi, ứng dụng của bạn có thể đáp ứng các yêu cầu web với tốc độ cực nhanh và cung cấp trải nghiệm người dùng tốt hơn cho khách hàng của bạn Show
Hàng đợi của Laravel cung cấp API xếp hàng thống nhất trên nhiều phụ trợ hàng đợi khác nhau, chẳng hạn như Amazon SQS, Redis hoặc thậm chí là cơ sở dữ liệu quan hệ Các tùy chọn cấu hình hàng đợi của Laravel được lưu trữ trong tệp cấu hình 05 của ứng dụng của bạn. Trong tệp này, bạn sẽ tìm thấy các cấu hình kết nối cho từng trình điều khiển hàng đợi đi kèm với khung, bao gồm cơ sở dữ liệu, trình điều khiển Amazon SQS, Redis và Beanstalkd, cũng như trình điều khiển đồng bộ sẽ thực thi công việc ngay lập tức (để sử dụng trong quá trình . Trình điều khiển hàng đợi 06 cũng được bao gồm để loại bỏ các công việc được xếp hàng đợi
Kết nối Vs. hàng đợiTrước khi bắt đầu với hàng đợi Laravel, điều quan trọng là phải hiểu sự khác biệt giữa "kết nối" và "hàng đợi". Trong tệp cấu hình 05 của bạn, có một mảng cấu hình 08. Tùy chọn này xác định các kết nối đến các dịch vụ hàng đợi phụ trợ, chẳng hạn như Amazon SQS, Beanstalk hoặc Redis. Tuy nhiên, bất kỳ kết nối hàng đợi cụ thể nào cũng có thể có nhiều "hàng đợi" có thể được coi là các ngăn xếp hoặc chồng công việc được xếp hàng khác nhauLưu ý rằng mỗi ví dụ cấu hình kết nối trong tệp cấu hình 09 chứa thuộc tính 09. Đây là hàng đợi mặc định mà các công việc sẽ được gửi đến khi chúng được gửi đến một kết nối nhất định. Nói cách khác, nếu bạn gửi một công việc mà không xác định rõ ràng công việc đó sẽ được gửi đến hàng đợi nào, thì công việc đó sẽ được đặt trên hàng đợi được xác định trong thuộc tính 09 của cấu hình kết nối
Một số ứng dụng có thể không cần đẩy công việc lên nhiều hàng đợi, thay vào đó, ưu tiên có một hàng đợi đơn giản. Tuy nhiên, đẩy công việc vào nhiều hàng đợi có thể đặc biệt hữu ích cho các ứng dụng muốn ưu tiên hoặc phân đoạn cách xử lý công việc, vì queue worker của Laravel cho phép bạn chỉ định hàng đợi nào nó sẽ xử lý theo mức độ ưu tiên. Ví dụ: nếu bạn đẩy công việc vào hàng đợi 12, bạn có thể chạy một công nhân mang lại cho họ mức độ ưu tiên xử lý cao hơn
Ghi chú & điều kiện tiên quyết cho trình điều khiểncơ sở dữ liệuĐể sử dụng trình điều khiển hàng đợi 13, bạn sẽ cần một bảng cơ sở dữ liệu để giữ các công việc. Để tạo một di chuyển tạo bảng này, hãy chạy lệnh 14 Artisan. Khi quá trình di chuyển đã được tạo, bạn có thể di chuyển cơ sở dữ liệu của mình bằng lệnh 15Cuối cùng, đừng quên hướng dẫn ứng dụng của bạn sử dụng trình điều khiển 13 bằng cách cập nhật biến 17 trong tệp 18 của ứng dụng
làm lạiĐể sử dụng trình điều khiển hàng đợi 19, bạn nên định cấu hình kết nối cơ sở dữ liệu Redis trong tệp cấu hình 20 của mìnhCụm Redis Nếu kết nối hàng đợi Redis của bạn sử dụng Cụm Redis, tên hàng đợi của bạn phải chứa một. Điều này là bắt buộc để đảm bảo tất cả các khóa Redis cho một hàng đợi nhất định được đặt vào cùng một vị trí băm chặn Khi sử dụng hàng đợi Redis, bạn có thể sử dụng tùy chọn cấu hình 21 để chỉ định khoảng thời gian trình điều khiển sẽ đợi một công việc khả dụng trước khi lặp qua vòng lặp worker và thăm dò lại cơ sở dữ liệu RedisViệc điều chỉnh giá trị này dựa trên tải hàng đợi của bạn có thể hiệu quả hơn việc liên tục thăm dò cơ sở dữ liệu Redis để tìm công việc mới. Chẳng hạn, bạn có thể đặt giá trị thành 22 để cho biết rằng trình điều khiển sẽ chặn trong năm giây trong khi chờ công việc có sẵn
Các điều kiện tiên quyết khác của trình điều khiểnCác phụ thuộc sau đây là cần thiết cho trình điều khiển hàng đợi được liệt kê. Các phụ thuộc này có thể được cài đặt thông qua trình quản lý gói Composer
Tạo công việcTạo các lớp công việcTheo mặc định, tất cả các công việc có thể xếp hàng cho ứng dụng của bạn được lưu trữ trong thư mục 29. Nếu thư mục 29 không tồn tại, nó sẽ được tạo khi bạn chạy lệnh 31 Artisan
Lớp được tạo sẽ triển khai giao diện 32, cho Laravel biết rằng công việc sẽ được đẩy vào hàng đợi để chạy không đồng bộ
Cấu trúc lớp họcCác lớp công việc rất đơn giản, thường chỉ chứa một phương thức 33 được gọi khi công việc được xử lý bởi hàng đợi. Để bắt đầu, chúng ta hãy xem một lớp công việc ví dụ. Trong ví dụ này, chúng tôi sẽ giả vờ rằng chúng tôi quản lý một dịch vụ xuất bản podcast và cần xử lý các tệp podcast đã tải lên trước khi chúng được xuất bản
Trong ví dụ này, lưu ý rằng chúng ta có thể chuyển trực tiếp một Eloquent model vào hàm tạo của queued job. Vì đặc điểm 34 mà công việc đang sử dụng, các mô hình Eloquent và các mối quan hệ được tải của chúng sẽ được tuần tự hóa và hủy tuần tự hóa một cách duyên dáng khi công việc đang xử lýNếu queued job của bạn chấp nhận một Eloquent model trong hàm khởi tạo của nó, thì chỉ mã định danh cho model đó sẽ được tuần tự hóa vào queue. Khi công việc thực sự được xử lý, hệ thống xếp hàng sẽ tự động truy xuất lại phiên bản đầy đủ của mô hình và các mối quan hệ đã tải của nó từ cơ sở dữ liệu. Cách tiếp cận tuần tự hóa mô hình này cho phép gửi tải công việc nhỏ hơn nhiều đến trình điều khiển hàng đợi của bạn
|