-1

How to setup supervisor with laravel ?

Làm thế nào để chạy job trong nền trong laravel ?

Trước khi tìm hiểu về supervior, chúng ta cần tìm hiểu về các công việc nền tảng của laravel. Về cơ bản, nếu bạn đang làm việc trên các ứng dụng quy mô lớn và bạn quan tâm đến hiệu suất trang web, bạn có thể chạy các tác vụ tốn thời gian trong nền.

Ví dụ: nếu bạn có một trang web nơi người dùng của bạn tải lên video, tuy nhiên các tác vụ xử lý video sẽ mất nhiều thời gian hơn bình thường và bạn không muốn người dùng của mình đợi cho đến khi hoàn thành thay vì bạn muốn họ được thông báo khi quá trình tải lên video hoàn tất.

Các tác vụ như vậy có thể được chạy trong nền bằng cách giải mã yêu cầu web. Hãy cùng tìm hiểu cách đạt được những tác vụ như vậy bằng cách sử dụng laravel framework.

Setup laravel queue.

Trước tiên để chạy supervior chúng ta cần phải setup queue của laravel trước.

Để quản lý job thì có nhiều cách như redis hoặc bằng database.

Các bạn có thể làm theo doc.

https://laravel.com/docs/8.x/queues

Setup supervisor ?

Khi bạn đã thiết lập trình điều khiển hàng đợi, làm thế nào laravel biết khi nào chạy các công việc nền này? À, laravel cần biết về công việc này.

Chúng ta phải thiết lập một daemon chạy nền và tiếp tục tìm kiếm các công việc đang hoạt động và xử lý chúng khi nó tìm thấy một công việc mới được xếp hàng đợi trong cơ sở dữ liệu.

Supervisor về cơ bản là daemon dựa trên linux chạy ở chế độ nền. Chúng tôi phải cấu hình ứng dụng laravel của mình để người giám sát biết về các công việc nền.

Để cài đặt và cấu hình trình giám sát, chúng tôi sẽ chạy các lệnh sau trong cửa sổ đầu cuối linux của chúng tôi:

# install supervisor
$ sudo apt-get install supervisor

# go to supervisor config directory
cd /etc/supervisor/conf.d

# create a new laravel configuration
$ sudo nano laravel-worker.conf

# paste following contents to our file
# save changes using Ctrl + X + Y + Enter

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/project/artisan queue:work sqs --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=user
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/project/worker.log​

Đảm bảo trong tệp trên thay đổi vị trí của thư mục dự án của bạn bằng cách thay thế /var/www/project và thay thế user bằng id người dùng đã đăng nhập linux của bạn.

Sau khi lưu nội dung, chúng ta cần chạy lệnh sau để khởi tạo cấu hình mới:

# read the new config
$ sudo supervisorctl reread

# activate our configuration
$ sudo supervisorctl update

# start queue command
$ sudo supervisorctl start laravel-worker:*

# check the status of our new config
$ sudo supervisorctl status​

Tổng kết.

Hôm này tôi và các bạn đã cùng nhau setup công cụ quản lý job nền với laravel. Hy vọng nó sẽ giúp các bạn 1 chút gì đó trong công việc. Thanks!!!

Tài liệu: https://learn2torials.com/a/how-to-setup-laravel-supervisor https://laravel.com/docs/8.x/queues


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí