1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Học về Cron Jobs trong Laravel

Chủ đề trong 'Hỏi đáp Tin học' bởi nuongitq, 14/01/2016.

  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
  1. nuongitq

    nuongitq Thành viên quen thuộc

    Tham gia ngày:
    19/04/2015
    Bài viết:
    59
    Đã được thích:
    6
    Cron là một lịch trình công việc trong các hệ thống unix-like, chạy các lệnh shell trong khoảng thời gian nhất định. Bài viết này không có nghĩa là cho giới thiệu Cron, nhưng vì nó là một khái niệm quan trọng trong hướng dẫn của chúng tôi, chúng tôi sẽ sẽ mô tả các vấn đề cơ bản về cách hoạt động.

    cron cơ bản

    Cron là một daemon lên lịch công việc mà chạy dự kiến nhiệm vụ trong khoảng thời gian nhất định. Cron sử dụng một tập tin cấu hình được gọi là crontab, còn được gọi là bảng cron, để quản lý quá trình lập kế hoạch.

    Crontab chứa công việc cron, từng liên quan đến một công việc cụ thể. Công việc cron gồm hai phần, các biểu hiện cron, và một lệnh shell để chạy:


    Mã:
    * * * * * command/to/run
    Mỗi trường trong biểu thức trên (* * * * *) là một lựa chọn để thiết lập các lịch bay thường xuyên. Nó bao gồm phút, giờ, ngày trong tháng, tháng, ngày trong tuần theo thứ tự các vị trí. Các biểu tượng dấu đề cập đến tất cả các giá trị có thể cho các lĩnh vực tương ứng. Kết quả là, công việc cron trên sẽ được chạy mỗi phút trong ngày.

    Các công việc cron sau đây được thực hiện vào lúc 12:30 mỗi ngày:

    Mã:
    30 12 * * * command/to/run
    Đây chỉ là đỉnh của tảng băng trôi Cron; để tìm hiểu thêm về nó, bạn có thể muốn truy cập vào trang wikipedia.

    Trong PHP hỗ trợ các ứng dụng, công việc hành chính thường độc kịch bản PHP mà đang chạy trong chế độ CLI. Những kịch bản được viết để thực hiện các công việc khác nhau vào những thời điểm nhất định.

    Tuy nhiên, chúng ta không thể làm được gì nhiều mà không có sức mạnh của các thư viện PHP khác và các khuôn khổ. Trong bài viết này, bạn sẽ học cách sử dụng khuôn khổ Laravel để tạo ra các kịch bản PHP mạnh mẽ cho các dòng lệnh và lên lịch cho chúng ngay từ mã nguồn.

    Tạo Commands trong Laravel
    Tạo một lệnh trong PHP cũng đơn giản như việc tạo ra một kịch bản PHP, sau đó chạy nó trong dòng lệnh, sử dụng lệnh php:

    Mã:
    php somefile.php
    Như bạn có thể thấy, các tập tin được thông qua như là một tham số cho lệnh php.

    Cho dù ứng dụng của bạn đã được phát triển trong Laravel, hoặc bạn chỉ muốn sử dụng mặt tiền và người giúp việc của mình để tạo ra các kịch bản của bạn, bạn sẽ cần phải tải khởi Laravel trước khi sử dụng nó. Tuy nhiên, có một lựa chọn tốt hơn cho điều này: việc tạo ra một lệnh Laravel Artisan.

    Khi sử dụng lệnh thủ công, chúng tôi sẽ có quyền truy cập vào tất cả các tính năng của Laravel, bao gồm cả những người giúp đỡ, mặt tiền, và lệnh Artisan khác, chỉ cần đến tên một vài.

    Chúng tôi sẽ không đi vào chi tiết của Artisan lệnh ở đây, như họ đang vượt ra ngoài phạm vi của bài này, nhưng chúng ta hãy thảo luận về các vấn đề cơ bản, chỉ để bắt đầu. Chúng tôi sẽ sẽ được sử dụng phiên bản mới nhất của Laravel, đó là 5.1 ở thời điểm viết bài này.

    Chúng tôi sử dụng thực hiện: lệnh console Artisan để tạo ra một bộ xương class lệnh để làm việc với. Như một ví dụ, chúng ta sẽ tạo ra một lệnh mà sẽ gửi một tin nhắn SMS mừng sinh nhật cho người dùng của chúng tôi vào ngày sinh nhật của họ.

    Mã:
    $ php artisan make:console HappyBirthday --command=sms:birthday
    >>> Xem thêm học lập trình android cơ bản tại hà nội !

    Lệnh trên sẽ tạo ra một lớp có tên Happy Birthday trong một tập tin cùng tên trong thư mục / Console / Commands ứng dụng. Chúng tôi cũng chọn một tên cho các lệnh thông qua các tùy chọn lệnh. Đây là tên mà chúng tôi sẽ sử dụng khi gọi lệnh.
    Bây giờ chúng ta hãy mở tập tin, và xem những gì chúng tôi có cho đến nay. Có một số tài sản và phương pháp bên trong các lớp học mà xây dựng phụ trợ của lệnh:
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]get();
    
      foreach( $users as $user ) {
        if($user->has('cellphone')) {
        SMS::to($user->cellphone)
           ->msg('Dear ' . $user->fname . ', I wish you a happy birthday!')
           ->send();
        } 
    } 
    
    $this->info('The happy birthday messages were sent successfully!');
    
    }


    Khi lệnh được hoàn thành, chúng tôi cần phải đăng ký với Artisan, vì vậy mà nó sẽ có sẵn trong các thiết bị đầu cuối. Để làm được điều này, chúng ta chỉ cần thêm tên lớp của lệnh đến các mảng lệnh của lớp hạt nhân, mà nằm ở app/Console/Kernel.php:

    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('sms:birthday')->daily();
    }

    >> Tham khảo khóa học lập trình php cơ bản tại hà nội !

    Chúng tôi có thể sắp xếp tất cả các lệnh ngay từ phương pháp lịch. Theo các tiểu bang tài liệu, có một loạt các tần số lịch trình chúng ta có thể gán cho các nhiệm vụ. Chúng tôi sẽ liệt kê một vài trong số họ ở đây, nhưng bạn có thể muốn đọc tài liệu để xem danh sách đầy đủ và quyết định phù hợp nhất với hoàn cảnh của bạn.

    Để chạy một nhiệm vụ mỗi giờ mỗi ngày:
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('myTask')
             ->hourly(); 


    To run a task every day at midnight:
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('myTask')
             ->daily(); 


    To run a task every day at 9:30:
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('myTask')
             ->dailyAt('09:30'); 


    To run a task every week:
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('myTask')
             ->weekly(); 

    To run it every month:
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('myTask')
             ->monthly(); 


    We can also use a custom cron schedule, like an ordinary cron job expression:
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]$schedule->command('myTask')
             ->cron('* * * * *');


    Các nhiệm vụ trên would be running per minute.

    Để xem danh sách đầy đủ options, xin vui lòng tham khảo the documentation, phần Schedule Tần Options.

    Laravel that provide a file its ràng buộc hạn, điều which can be combined with phương pháp trên. For example, we can be sắp xếp công việc must be running hàng tuần, but the limit in one ngày nhất định and time.
    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('theTask')
             ->weekly()
             ->mondays()
             ->at(12:30);
    or
    
    command('theTask')
             ->weekly()
             ->sundays() 


    Chúng ta có thể đi xa hơn và hạn chế việc thực hiện các nhiệm vụ cho một điều kiện nào đó, bằng cách sử dụng khi phương pháp mà chấp nhận một đóng cửa. Nhiệm vụ sẽ được thực hiện chỉ khi việc đóng cửa trả về true.

    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]command('table:clean')
              ->daily()
              ->when(function() {
                 return SMS::isWorkingFine();
              });


    Starting the Laravel Scheduler

    To start the scheduler itself, we only need to add one cron job on the server (using the crontab -e command), which executes php /path/to/artisan schedule:run every minute in the day:

    Mã:
    [/SIZE][/FONT]
    [SIZE=4][FONT=Helvetica]* * * * * php /path/to/artisan schedule:run 1>>/dev/null 2>&1


    Xin lưu ý rằng chúng ta cần phải cung cấp đường dẫn đầy đủ đến các lệnh Artisan lắp đặt Laravel của chúng tôi.
    Để loại bỏ các đầu ra cron chúng tôi đặt / dev / null 2> & 1 ở cuối biểu thức công việc định kỳ.
    Để đọc thêm về các Scheduler, xem trong phần Lập kế hoạch trong các tài liệu hướng dẫn.

    Lời kết

    Trong hướng dẫn này, chúng tôi đã sử dụng của Laravel Artisan lệnh để tạo ra các lệnh terminal. Thay vì thêm nhiều mục công việc cron trên máy chủ mỗi công việc, chúng ta chỉ tạo một lệnh được thực thi mỗi phút và đại biểu trách nhiệm công việc lên lịch Laravel của.

    >>Xem thêm Khóa học photoshop cơ bản tại hà nội !

Chia sẻ trang này