Thư viện quy trình nền PHP

Bài viết này là một phần của loạt bài về xây dựng một ứng dụng mẫu — một blog thư viện nhiều hình ảnh — để đo điểm chuẩn và tối ưu hóa hiệu suất. [Xem repo tại đây. ]

Trong một bài viết trước, chúng tôi đã thêm tính năng thay đổi kích thước hình ảnh theo yêu cầu. Hình ảnh được thay đổi kích thước theo yêu cầu đầu tiên và được lưu vào bộ đệm để sử dụng sau. Bằng cách này, chúng tôi đã thêm một số chi phí vào lần tải đầu tiên;

Cách tiếp cận được tối ưu hóa sẽ là hiển thị hình thu nhỏ sau khi tạo thư viện. Bạn có thể đang nghĩ, "Được rồi, nhưng sau đó chúng ta sẽ chặn người dùng đang tạo thư viện?" . Người dùng sẽ bối rối về thời gian tải lâu hoặc thậm chí tệ hơn là gặp phải thời gian chờ và/hoặc lỗi nếu hình ảnh quá nặng để xử lý. Giải pháp tốt nhất là di chuyển các tác vụ nặng nề này vào nền

công việc nền

Công việc nền là cách tốt nhất để thực hiện bất kỳ xử lý nặng nào. Chúng tôi có thể thông báo ngay cho người dùng của mình rằng chúng tôi đã nhận được yêu cầu của họ và lên lịch xử lý yêu cầu đó. Tương tự như cách YouTube thực hiện với các video đã tải lên. chúng không thể truy cập được sau khi tải lên. Người dùng cần đợi cho đến khi video được xử lý hoàn tất để xem trước hoặc chia sẻ nó

Xử lý hoặc tạo tệp, gửi email hoặc bất kỳ tác vụ không quan trọng nào khác phải được thực hiện trong nền

Quá trình xử lý nền hoạt động như thế nào?

Có hai thành phần chính trong phương pháp xử lý nền. hàng đợi công việc và [các] công nhân. Ứng dụng tạo các công việc cần được xử lý trong khi công nhân đang chờ đợi và lấy từ hàng đợi một công việc tại một thời điểm

Bạn có thể tạo nhiều phiên bản worker [quy trình] để tăng tốc độ xử lý, cắt một công việc lớn thành các phần nhỏ hơn và xử lý chúng đồng thời. Tùy thuộc vào cách bạn muốn tổ chức và quản lý xử lý nền, nhưng lưu ý rằng xử lý song song không phải là một nhiệm vụ tầm thường. bạn nên quan tâm đến các điều kiện cuộc đua tiềm ẩn và xử lý các nhiệm vụ thất bại một cách duyên dáng

ngăn xếp công nghệ của chúng tôi

Chúng tôi đang sử dụng hàng đợi công việc Beanstalkd để lưu trữ công việc, thành phần Bảng điều khiển Symfony để triển khai công nhân dưới dạng lệnh điều khiển và Người giám sát để quản lý các quy trình của công nhân

Nếu bạn đang sử dụng Homestead Cải tiến, Beanstalkd và Trình giám sát đã được cài đặt nên bạn có thể bỏ qua phần hướng dẫn cài đặt bên dưới

Cài đặt Beanstalkd

Cây đậu là

hàng đợi công việc nhanh với giao diện chung được thiết kế ban đầu để giảm độ trễ của lượt xem trang trong các ứng dụng web có khối lượng lớn bằng cách chạy các tác vụ tốn thời gian một cách không đồng bộ

Có nhiều thư viện máy khách có sẵn mà bạn có thể sử dụng. Trong dự án của chúng tôi, chúng tôi đang sử dụng Pheanstalk

Để cài đặt Beanstalkd trên máy chủ Ubuntu hoặc Debian của bạn, chỉ cần chạy

Chủ Đề