0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Giải pháp Thông báo Tóm tắt Hằng ngày trong Laravel

Đăng vào 8 tháng trước

• 5 phút đọc

Chủ đề:

#laravel

Giới thiệu

Trong cổng thông tin việc làm của chúng tôi, mỗi khi một ứng viên nộp đơn xin việc, chúng tôi gửi ngay một email đến nhà tuyển dụng. Ban đầu, điều này khá ổn vì nhà tuyển dụng nhận được thông tin cập nhật nhanh chóng. Tuy nhiên, khi ngày càng nhiều người nộp đơn, những nhà tuyển dụng cho các vị trí việc làm phổ biến bắt đầu nhận hàng chục hoặc thậm chí hàng trăm email trong một ngày. Hộp thư của họ trở nên đầy ứ với những email “nhân bản”. Nhiều nhà tuyển dụng cảm thấy khó chịu và bắt đầu bỏ qua các thông báo này. Chúng tôi cần một cách tốt hơn.

Vấn đề: Quá nhiều email

Khi một ứng viên nộp đơn, đoạn mã sau sẽ gửi một email cho nhà tuyển dụng:

php Copy
Notification::route('mail', $recruiter->email)
->notify(new ApplicationNotification($application));

Điều này sẽ gửi một email cho mỗi đơn ứng tuyển. Với 100 ứng viên → 100 email. Điều này gây spam cho hộp thư. Nhà tuyển dụng sẽ không hài lòng với điều này.

Giải pháp mới: Thông báo Tóm tắt Hằng ngày

Thay vì gửi một email mỗi lần, chúng tôi tập hợp tất cả các đơn ứng tuyển trong ngày và gửi một thông báo vào buổi tối. Dưới đây là cách thực hiện:

php Copy
use App\Models\Recruiter;
use App\Models\Application;
use App\Notifications\ApplicationNotification;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class SendDailyApplicationSummary implements ShouldQueue
{
    use Dispatchable, Queueable;

    public function handle()
    {
        Recruiter::chunk(100, function ($recruiters) {
            foreach ($recruiters as $recruiter) {
                $applications = Application::where('recruiter_id', $recruiter->id)
                    ->whereDate('created_at', today())
                    ->get();

                if ($applications->isNotEmpty()) {
                    Notification::route('mail', $recruiter->email)
                        ->notify(new ApplicationNotification($applications));
                }
            }
        });
    }
}

Chúng tôi cũng cần đảm bảo rằng ApplicationNotification đã được cập nhật với logic để tóm tắt các đơn ứng tuyển trong ngày. Sau khi hoàn thành, chúng tôi chỉ cần lên lịch cho nó bằng cách sử dụng Laravel Scheduler:

php Copy
class Kernel extends ConsoleKernel
{
    /**
     * Định nghĩa lịch trình lệnh của ứng dụng.
     */
    protected function schedule(Schedule $schedule): void
    {
      $schedule->job(new SendDailyApplicationSummary)->dailyAt('18:00');
    }
}

Bây giờ, mọi nhà tuyển dụng trong công ty sẽ nhận được một email tóm tắt duy nhất thay vì nhiều email cho các đơn ứng tuyển mà họ nhận được trong ngày.

Thực hành tốt nhất

  • Tạo một thông báo tóm tắt hàng ngày: Điều này giúp nhà tuyển dụng không bị ngợp với quá nhiều email và dễ dàng theo dõi các ứng viên.
  • Sử dụng Queue: Đảm bảo rằng các thông báo được xử lý một cách hiệu quả mà không làm chậm ứng dụng.
  • Kiểm tra định kỳ: Đảm bảo rằng thông báo được gửi đúng theo lịch trình và không có thông báo nào bị bỏ lỡ.

Những cạm bẫy phổ biến

  • Quên cập nhật logic trong Notification: Đảm bảo rằng bạn đã cập nhật ApplicationNotification để có thể tóm tắt thông tin đúng cách.
  • Lịch trình không chính xác: Đảm bảo bạn đã đặt lịch trình đúng thời gian để tránh việc gửi thông báo không đúng giờ.

Mẹo hiệu suất

  • Tối ưu hóa truy vấn: Sử dụng các phương pháp tối ưu hóa truy vấn để giảm tải cho cơ sở dữ liệu khi truy vấn danh sách ứng viên.
  • Giảm thiểu số lần gửi thông báo: Chỉ gửi thông báo khi có ứng viên mới, giảm thiểu tài nguyên sử dụng.

Khắc phục sự cố

  • Không nhận được email: Kiểm tra cài đặt email và đảm bảo rằng các thông báo không bị đánh dấu là spam.
  • Không thấy thông tin tóm tắt: Kiểm tra lại logic trong ApplicationNotification để đảm bảo rằng nó đã được cập nhật đúng cách.

Kết luận

Như vậy, chúng ta thấy rằng việc sử dụng Notification, Scheduler và Queue trong Laravel giúp chúng ta gửi cập nhật ứng tuyển một cách hợp lý dưới dạng tóm tắt hàng ngày, mà không gây spam cho nhà tuyển dụng. Điều này không chỉ giúp nhà tuyển dụng hài lòng mà còn làm cho cổng thông tin việc làm của chúng tôi trở nên hiệu quả hơn. Hãy áp dụng cách tiếp cận này trong dự án của bạn để cải thiện trải nghiệm người dùng và tối ưu hóa quy trình làm việc!

Câu hỏi thường gặp (FAQ)

  1. Làm thế nào để tạo thông báo tóm tắt hàng ngày trong Laravel?
    • Bạn có thể sử dụng các Queue và Scheduler như đã trình bày trong bài viết.
  2. Có cách nào khác để xử lý thông báo không?
    • Có thể sử dụng các dịch vụ bên ngoài như Twilio hoặc Pusher để gửi thông báo qua SMS hoặc thông báo đẩy.
  3. Cần lưu ý gì khi sử dụng thông báo trong Laravel?
    • Hãy đảm bảo rằng bạn đã cấu hình đúng các cài đặt email và logic trong Notification.

Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về cách tối ưu hóa thông báo trong ứng dụng Laravel của mình!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào