Hàng đợi nghệ nhân php: công việc

Hàng đợi cho phép bạn trì hoãn việc xử lý một tác vụ tốn thời gian, chẳng hạn như gửi e-mail, cho đến một thời điểm sau đó, do đó tăng tốc đáng kể các yêu cầu web tới ứng dụng của bạn

Tệp cấu hình hàng đợi được lưu trữ trong

Queue::push['[email protected]', ['message' => $message], 'emails'];
9. 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 được bao gồm, chẳng hạn như cơ sở dữ liệu, Beanstalkd, IronMQ, Amazon SQS và Redis

Hai trình điều khiển hàng đợi đặc biệt cũng có sẵn

  • Trình điều khiển hàng đợi
    $date = Carbon::now[]->addMinutes[15];
    
    Queue::later[$date, 'SendEmail', ['message' => $message]];
    0 chạy một công việc ngay lập tức khi nó được xếp hàng đợi. Điều này hữu ích cho sự phát triển
  • Trình điều khiển hàng đợi
    $date = Carbon::now[]->addMinutes[15];
    
    Queue::later[$date, 'SendEmail', ['message' => $message]];
    1 chỉ cần loại bỏ các công việc đã xếp hàng để chúng không bao giờ được thực thi

Điều kiện tiên quyết về trình điều khiển

Trước khi sử dụng trình điều khiển Amazon SQS, Beanstalkd, IronMQ hoặc Redis, bạn sẽ cần cài đặt plugin Trình điều khiển

sử dụng cơ bản

Đẩy một công việc vào hàng đợi

Để đẩy một công việc mới vào hàng đợi, hãy sử dụng phương thức

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
2

Queue::push['SendEmail', ['message' => $message]];

Đối số đầu tiên được cung cấp cho phương thức

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
3 là tên của lớp sẽ được sử dụng để xử lý công việc. Đối số thứ hai là một mảng dữ liệu sẽ được chuyển đến trình xử lý. Một trình xử lý công việc nên được định nghĩa như vậy

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}

Lưu ý rằng phương thức duy nhất được yêu cầu là

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
4, phương thức này nhận một thể hiện
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
5 cũng như mảng của
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
6 đã được đẩy vào hàng đợi

Chỉ định phương thức xử lý tùy chỉnh

Nếu bạn muốn công việc sử dụng một phương pháp khác với

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
4, bạn có thể chỉ định phương pháp đó khi đẩy công việc

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
1

Chỉ định tên hàng đợi cho một công việc

Bạn cũng có thể chỉ định hàng đợi / ống mà công việc sẽ được gửi đến

Queue::push['[email protected]', ['message' => $message], 'emails'];

Trì hoãn thực hiện công việc

Đôi khi bạn có thể muốn trì hoãn việc thực hiện một queued job. Chẳng hạn, bạn có thể muốn xếp hàng một công việc sẽ gửi e-mail cho khách hàng 15 phút sau khi đăng ký. Bạn có thể thực hiện việc này bằng cách sử dụng phương pháp

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
8

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];

Trong ví dụ này, chúng tôi đang sử dụng thư viện ngày Carbon để chỉ định độ trễ mà chúng tôi muốn chỉ định cho công việc. Ngoài ra, bạn có thể chuyển số giây bạn muốn trì hoãn dưới dạng số nguyên

GHI CHÚ. Dịch vụ Amazon SQS có giới hạn độ trễ là 900 giây [15 phút]

Hàng đợi và mô hình

Nếu công việc được xếp hàng đợi của bạn có một mô hình trong dữ liệu của nó, thì chỉ mã định danh cho mô hình đó sẽ được đánh số thứ tự vào hàng đợi. 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 mô hình đầy đủ từ cơ sở dữ liệu

Tất cả đều hoàn toàn trong suốt đối với ứng dụng của bạn và ngăn ngừa các sự cố có thể phát sinh từ việc sắp xếp theo thứ tự các phiên bản mô hình đầy đủ

Xóa một công việc đã xử lý

Sau khi bạn đã xử lý một công việc, công việc đó phải được xóa khỏi hàng đợi, có thể thực hiện việc này thông qua phương thức

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
9 trên phiên bản
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
5

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
7

Giải phóng một công việc trở lại hàng đợi

Nếu bạn muốn giải phóng một công việc trở lại hàng đợi, bạn có thể làm như vậy thông qua phương thức

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
71

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
9

Bạn cũng có thể chỉ định số giây chờ trước khi công việc được phát hành

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
0

Kiểm tra số lần chạy thử

Nếu một ngoại lệ xảy ra trong khi công việc đang được xử lý, nó sẽ tự động được giải phóng trở lại hàng đợi. Bạn có thể kiểm tra số lần thử đã được thực hiện để chạy công việc bằng cách sử dụng phương pháp

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
72

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
2

Đánh dấu một công việc là thất bại

Mặc dù một công việc thường được đánh dấu là không thành công nếu một ngoại lệ được đưa ra trong khi chạy công việc và các lần thử lại đã hết, bạn có thể muốn thực hiện công việc thất bại theo cách thủ công trong một số trường hợp nhất định

Để đánh dấu một công việc là thất bại, bạn có thể sử dụng phương pháp

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
73

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
4

Truy cập ID công việc

Bạn cũng có thể truy cập mã định danh công việc

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
0

Đóng cửa hàng đợi

Thay vì đẩy một lớp công việc vào hàng đợi, bạn cũng có thể đẩy một lần đóng cho các tác vụ đơn giản cần được thực hiện ngoài chu kỳ yêu cầu hiện tại

Đẩy một bao đóng vào hàng đợi

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
1

GHI CHÚ. Thay vì cung cấp các đối tượng cho các Đóng hàng đợi thông qua chỉ thị

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
74, hãy xem xét chuyển các khóa chính và kéo lại các mô hình được liên kết từ trong công việc hàng đợi của bạn. Điều này thường tránh hành vi tuần tự hóa không mong muốn

Khi sử dụng Sắt. hàng đợi đẩy io, bạn nên thực hiện thêm hàng đợi đề phòng Đóng cửa. Điểm cuối nhận thông báo hàng đợi của bạn nên kiểm tra mã thông báo để xác minh rằng yêu cầu thực sự đến từ Iron. io. Ví dụ: điểm cuối hàng đợi đẩy của bạn phải giống như.

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
75. Sau đó, bạn có thể kiểm tra giá trị của mã thông báo bí mật trong ứng dụng của mình trước khi sắp xếp lại yêu cầu hàng đợi

Chạy nhân viên xếp hàng

Mùa đông bao gồm một số lệnh điều khiển sẽ xử lý các công việc trong hàng đợi

Để xử lý các công việc mới khi chúng được đẩy vào hàng đợi, hãy chạy lệnh

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
2

Khi tác vụ này đã bắt đầu, nó sẽ tiếp tục chạy cho đến khi bị dừng thủ công. Bạn có thể sử dụng trình giám sát quy trình, chẳng hạn như Người giám sát để đảm bảo rằng nhân viên xếp hàng không ngừng chạy

Queue worker process lưu trữ trạng thái ứng dụng đã khởi động trong bộ nhớ. Họ sẽ không nhận ra những thay đổi trong mã của bạn sau khi chúng được bắt đầu. Khi triển khai các thay đổi, hãy khởi động lại công nhân xếp hàng

Xử lý một công việc duy nhất

Để chỉ xử lý công việc đầu tiên trên hàng đợi, hãy sử dụng tùy chọn

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
77

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
3

Chỉ định kết nối & Hàng đợi

Bạn cũng có thể chỉ định kết nối hàng đợi nào mà nhân viên sẽ sử dụng

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
4

Bạn có thể chuyển danh sách các kết nối hàng đợi được phân tách bằng dấu phẩy cho lệnh

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
78 để đặt mức độ ưu tiên của hàng đợi

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
5

Trong ví dụ này, các công việc trên hàng đợi

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
79 sẽ luôn được xử lý trước khi chuyển sang các công việc từ hàng đợi
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
90

Chỉ định tham số thời gian chờ công việc

Bạn cũng có thể đặt khoảng thời gian [tính bằng giây] cho mỗi công việc được phép chạy

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
6

Chỉ định thời lượng ngủ của hàng đợi

Ngoài ra, bạn có thể chỉ định số giây chờ trước khi bỏ phiếu cho công việc mới

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
7

Lưu ý rằng hàng đợi chỉ "ngủ" nếu không có công việc nào trong hàng đợi. Nếu có nhiều công việc hơn, hàng đợi sẽ tiếp tục làm việc mà không ngủ

Công nhân xếp hàng daemon

Theo mặc định,

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76 sẽ xử lý các công việc mà không cần khởi động lại khung. Điều này giúp giảm đáng kể mức sử dụng CPU khi so sánh với lệnh
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
92, nhưng lại tăng thêm độ phức tạp khi cần rút hàng đợi của các công việc hiện đang thực thi trong quá trình triển khai của bạn

Để khởi động queue worker ở chế độ daemon, chỉ cần bỏ cờ

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
77

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
8

Bạn có thể sử dụng lệnh

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
94 để xem tất cả các tùy chọn có sẵn

Triển khai với nhân viên hàng đợi daemon

Cách đơn giản nhất để triển khai một ứng dụng sử dụng trình xử lý hàng đợi daemon là đặt ứng dụng ở chế độ bảo trì khi bắt đầu triển khai của bạn. Điều này có thể được thực hiện bằng cách sử dụng khu vực cài đặt phụ trợ. Khi ứng dụng ở chế độ bảo trì, Winter sẽ không chấp nhận bất kỳ công việc mới nào ngoài hàng đợi, nhưng sẽ tiếp tục xử lý các công việc hiện có

Cách dễ nhất để khởi động lại công nhân của bạn là đưa lệnh sau vào tập lệnh triển khai của bạn

class SendEmail
{
    public function fire[$job, $data]
    {
        //
    }
}
9

Lệnh này sẽ hướng dẫn tất cả nhân viên xếp hàng khởi động lại sau khi họ xử lý xong công việc hiện tại của mình

GHI CHÚ. Lệnh này dựa vào hệ thống bộ đệm để lên lịch khởi động lại. Theo mặc định, APCu không hoạt động đối với các lệnh CLI. Nếu bạn đang sử dụng APCu, hãy thêm

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
95 vào cấu hình APCu của bạn

Mã hóa cho công nhân hàng đợi daemon

Daemon queue worker không khởi động lại nền tảng trước khi xử lý từng công việc. Do đó, bạn nên cẩn thận để giải phóng mọi tài nguyên nặng trước khi công việc của bạn kết thúc. Ví dụ: nếu bạn đang thực hiện thao tác hình ảnh với thư viện GD, bạn nên giải phóng bộ nhớ bằng

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
96 khi hoàn tất

Tương tự, kết nối cơ sở dữ liệu của bạn có thể bị ngắt kết nối khi được sử dụng bởi trình nền chạy dài. Bạn có thể sử dụng phương pháp

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
97 để đảm bảo bạn có kết nối mới

Sử dụng daemon hệ thống

Mặc dù việc chạy queue worker với tư cách là daemon cho đến hết

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
98 là tốt cho quá trình phát triển, nhưng việc sử dụng trình quản lý daemon hệ thống trên máy chủ của bạn để chạy và giám sát queue worker sẽ mang lại nhiều lợi ích như tự động khởi động lại, đăng nhập hệ thống tốt hơn và kiểm soát nhiều hơn đối với

Dưới đây là hai ví dụ về trình quản lý daemon hệ thống phổ biến

hệ thống

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
99 là trình quản lý quy trình phổ biến được sử dụng trên các bản phát hành Linux gần đây hơn. Nó bao gồm một loạt các thành phần hệ thống và cung cấp khả năng kiểm soát chặt chẽ và cấu hình đơn giản. Vì nó được cài đặt sẵn trên nhiều bản phân phối Linux cho đến nay, nên không cần cài đặt thêm phần mềm nào để tận dụng lợi thế của nó

Đăng ký dịch vụ queue worker

Bạn có thể đăng ký một dịch vụ mới để chạy queue worker bằng cách chạy lệnh sau với tư cách là người dùng máy chủ web trong thiết bị đầu cuối CLI của bạn

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
10

Điều này sẽ mở ra một trình chỉnh sửa đầu cuối để bạn nhập cấu hình dịch vụ. Một cấu hình điển hình sẽ được tạo thành như sau

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
11

Bạn nên sử dụng thư mục gốc của dự án làm định nghĩa

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
00. Định nghĩa
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
01 phải chỉ định đường dẫn trực tiếp đến tệp thực thi PHP của bạn, lệnh và đối số
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76 mà bạn muốn sử dụng

Khi bạn lưu cấu hình của mình, bạn sẽ cần kích hoạt nó

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
12

Nếu bạn thực hiện bất kỳ thay đổi nào đối với cấu hình dịch vụ của mình, bạn phải tải lại cấu hình trong

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
99, có thể thực hiện việc này bằng cách chạy lệnh sau

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
13

Bắt đầu/dừng daemon

Để bắt đầu trình nền công nhân hàng đợi của bạn, chỉ cần chạy như sau

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
14

Và để dừng daemon queue worker

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
15

Cuối cùng, để khởi động lại nó

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
16

GHI CHÚ. Nếu bạn chạy các lệnh sau khi đăng nhập qua phiên SSH, trình nền của bạn có thể dừng ngay khi bạn đăng xuất. Bạn có thể yêu cầu hệ điều hành của mình duy trì bất kỳ quy trình nào của mình bằng cách chạy lệnh sau, thay thế trình giữ chỗ

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
04 bằng người dùng đang chạy dịch vụ.
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
05

Kiểm tra trạng thái của daemon

Nếu bạn muốn kiểm tra trạng thái nhân viên xếp hàng của mình, bạn có thể chạy như sau

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
17

Theo mặc định,

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
99 sẽ hiển thị dịch vụ của bạn có hoạt động hay không và cung cấp một đoạn nhật ký nhỏ cho dịch vụ

Bạn cũng có thể lấy toàn bộ nhật ký bằng cách truy vấn

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
07

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
18

Người giám sát

Người giám sát là người giám sát quy trình cho hệ điều hành Linux và sẽ tự động khởi động lại quy trình

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76 của bạn nếu nó không thành công. Để cài đặt Trình giám sát trên Ubuntu, bạn có thể sử dụng lệnh sau

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
19

Cấu hình giám sát viên

Các tệp cấu hình giám sát thường được lưu trữ trong thư mục

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
09. Trong thư mục này, bạn có thể tạo bất kỳ số lượng tệp cấu hình nào hướng dẫn người giám sát cách giám sát các quy trình của bạn. Ví dụ: hãy tạo tệp
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
20 bắt đầu và theo dõi quy trình
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76

Queue::push['[email protected]', ['message' => $message], 'emails'];
0

Trong ví dụ này, chỉ thị

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
22 sẽ hướng dẫn Người giám sát chạy 8 quy trình
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76 và giám sát tất cả chúng, tự động khởi động lại chúng nếu chúng không thành công. Tất nhiên, bạn nên thay đổi phần
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76 của chỉ thị lệnh để phản ánh kết nối hàng đợi mong muốn của bạn. Chỉ thị
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
25 nên được thay đổi thành tên của người dùng có quyền chạy lệnh

Người giám sát bắt đầu

Khi tệp cấu hình đã được tạo, bạn có thể cập nhật cấu hình Người giám sát và bắt đầu các quy trình bằng cách sử dụng các lệnh sau

Queue::push['[email protected]', ['message' => $message], 'emails'];
1

Để biết thêm thông tin về Người giám sát, hãy tham khảo tài liệu Người giám sát

công việc thất bại

Vì mọi thứ không phải lúc nào cũng diễn ra theo kế hoạch nên đôi khi các công việc đã xếp hàng của bạn sẽ không thành công. Đừng lo lắng, điều tốt nhất xảy ra với chúng ta. Có một cách thuận tiện để chỉ định số lần tối đa một công việc nên được thử. Sau khi một công việc vượt quá số lần thử này, nó sẽ được chèn vào bảng

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
26. Tên bảng công việc thất bại có thể được cấu hình thông qua tệp cấu hình
Queue::push['[email protected]', ['message' => $message], 'emails'];
9

Bạn có thể chỉ định số lần tối đa một công việc sẽ được thực hiện bằng cách sử dụng công tắc

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
28 trên lệnh
$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
76

Queue::push['[email protected]', ['message' => $message], 'emails'];
2

Nếu bạn muốn đăng ký một sự kiện sẽ được gọi khi công việc xếp hàng không thành công, bạn có thể sử dụng phương thức

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
40. Sự kiện này là một cơ hội tuyệt vời để thông báo cho nhóm của bạn qua e-mail hoặc dịch vụ bên thứ ba khác

Queue::push['[email protected]', ['message' => $message], 'emails'];
3

Bạn cũng có thể định nghĩa phương thức

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
41 trực tiếp trên lớp công việc xếp hàng, cho phép bạn thực hiện các hành động cụ thể của công việc khi xảy ra lỗi

Queue::push['[email protected]', ['message' => $message], 'emails'];
4

Mảng ban đầu của

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
6 cũng sẽ tự động được chuyển vào phương thức bị lỗi

Thử lại các công việc thất bại

Để xem tất cả các công việc thất bại của bạn, bạn có thể sử dụng lệnh Artisan

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
43

Queue::push['[email protected]', ['message' => $message], 'emails'];
5

Lệnh

$date = Carbon::now[]->addMinutes[15];

Queue::later[$date, 'SendEmail', ['message' => $message]];
43 sẽ liệt kê ID công việc, kết nối, hàng đợi và thời gian lỗi. ID công việc có thể được sử dụng để thử lại công việc không thành công. Chẳng hạn, để thử lại một công việc không thành công có ID là 5, lệnh sau sẽ được đưa ra

Laravel queue hoạt động như thế nào?

Hàng đợi của Laravel cung cấp API hàng đợi 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 cấu hình/hàng đợi của ứng dụng của bạn. tập tin cấu hình php.

Hàng đợi công việc hoạt động như thế nào?

Một hàng đợi công việc chứa danh sách các công việc được sắp xếp theo thứ tự đang chờ hệ thống con xử lý . Hàng đợi công việc là nơi đầu tiên mà một công việc hàng loạt đã gửi đi trước khi hoạt động trong một hệ thống con. Công việc được giữ ở đây cho đến khi một số yếu tố được đáp ứng.

Làm cách nào để chạy hàng đợi trong php?

php để đảm bảo rằng biến môi trường “QUEUE_CONNECTION” được sử dụng trong đó để đặt trình điều khiển mặc định. Sau đó, bạn cần tạo một Công việc xếp hàng và để làm được điều đó, bạn cần chạy chương trình “make. lệnh job” như bên dưới với tên lớp. Trong ví dụ này, chúng tôi đang sử dụng tên lớp “MatchSendEmail”

Làm cách nào để chạy hàng đợi cụ thể trong Laravel?

Để triển khai nếu bạn đang sử dụng trình điều khiển hàng đợi redis, nếu không, bạn có thể làm theo hướng dẫn này tại đây để cài đặt và định cấu hình redis và sau đó, bạn nên tạo một bảng cho các công việc không thành công bằng cách sử dụng hàng đợi thủ công php. di chuyển nghệ nhân php bảng không thành công và sau đó sử dụng hàng đợi nghệ nhân php. làm việc redis --tries=3 --backoff=3 để thử lại mọi công việc thất bại

Chủ Đề