Công việc cron Php cứ sau 10 giây
Ngắn gọn. Bộ lập lịch công việc định kỳ không hỗ trợ lập lịch các công việc chạy trong khoảng thời gian vài giây. Trong bài viết này, chúng tôi sẽ chỉ cho bạn một thủ thuật đơn giản giúp bạn chạy cron job cứ sau 30 giây hoặc x giây trong Linux Show
Bạn chưa quen với bộ lập lịch công việc định kỳ và muốn chạy một công việc cứ sau 30 giây? . Bạn không thể lên lịch cho một công việc định kỳ để chạy mỗi x giây. Cron chỉ hỗ trợ khoảng thời gian ít nhất là 60 giây (i. e 1 phút). Để chạy một công việc định kỳ cứ sau 30 giây, bạn cần sử dụng thủ thuật mà chúng tôi đã giải thích bên dưới [ Bạn cũng có thể thích. 11 ví dụ về lập lịch công việc Cron trong Linux ] Trong hướng dẫn này, chúng tôi cũng sẽ đề cập đến nhiều ví dụ khác để chạy một công việc hoặc lệnh hoặc tập lệnh mỗi giây. Nhưng hãy bắt đầu bằng cách giới thiệu cách chạy một công việc định kỳ cứ sau 30 giây trong Linux Chạy Cron Job cứ sau 30 giây trong LinuxĐể đạt được nhiệm vụ trên, hãy tạo hai mục trong crontab. Công việc đầu tiên sẽ chạy lệnh ngày sau mỗi phút (60 giây), sau đó mục thứ hai sử dụng lệnh ngủ để trì hoãn trong một khoảng thời gian xác định (30 giây trong trường hợp này) và gọi lại lệnh ngày Bạn cần thêm các mục sau vào crontab (bảng cron) và mở nó để chỉnh sửa bằng lệnh crontab sau (cờ * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log66 cho phép chỉnh sửa) # crontab -e Thêm các mục cron sau vào tệp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log Bây giờ nếu bạn kiểm tra nội dung của /tmp/date. log, bạn sẽ thấy rằng lệnh ngày được chạy cứ sau 30 giây. Ta có thể dùng lệnh cat để xem file và kiểm tra cột thời gian để xác nhận như sau $ cat /tmp/date.log Bạn cũng có thể xem tệp được cập nhật theo thời gian thực. Để làm điều đó, hãy sử dụng lệnh tail với cờ * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log67 $ tail -f /tmp/date.log Chạy Cron Job cứ sau 10 giây trong LinuxHãy xem thêm các ví dụ. Cái này cho thấy cách chạy một công việc định kỳ cứ sau 10 giây. Mẹo đơn giản là chơi xung quanh với số giây của lệnh ngủ * * * * * date>> /tmp/date.log * * * * * sleep 10; date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log * * * * * sleep 50; date>> /tmp/date.log Một lần nữa nếu chúng ta xem /tmp/date. log, nó sẽ được cập nhật cứ sau 10 giây dựa trên các mục crontab ở trên $ tail -f /tmp/date.log Đây là một ví dụ khác về việc thực hiện lệnh ngày sau mỗi 15 giây * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log Cuối cùng, để chạy một công việc định kỳ cứ sau 20 giây, bạn có thể có một cái gì đó như thế này * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log Ngoài ra, đây là các bài viết khác để bạn học lập lịch công việc bằng cron
Bây giờ bạn biết nó. Chúng tôi đã chỉ cho bạn các ví dụ khác nhau để chạy một công việc định kỳ mỗi x giây trong Linux. Đọc các trang cron man (bằng cách chạy các lệnh * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log0 và * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log1) để biết thêm thông tin Trước đây, bạn có thể đã viết một mục cấu hình cron cho từng tác vụ bạn cần lên lịch trên máy chủ của mình. Tuy nhiên, điều này có thể nhanh chóng trở thành một vấn đề khó khăn vì lịch trình tác vụ của bạn không còn nằm trong quyền kiểm soát nguồn và bạn phải SSH vào máy chủ của mình để xem các mục cron hiện tại của bạn hoặc thêm các mục bổ sung Bộ lập lịch lệnh của Laravel cung cấp một cách tiếp cận mới để quản lý các tác vụ đã lên lịch trên máy chủ của bạn. Bộ lập lịch cho phép bạn xác định lịch trình lệnh của mình một cách trôi chảy và rõ ràng trong chính ứng dụng Laravel của bạn. Khi sử dụng bộ lập lịch, chỉ cần một mục cron duy nhất trên máy chủ của bạn. Lịch trình nhiệm vụ của bạn được xác định trong phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log07 của tệp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log06. Để giúp bạn bắt đầu, một ví dụ đơn giản được định nghĩa trong phương thức Xác định lịch trìnhBạn có thể xác định tất cả các nhiệm vụ theo lịch trình của mình trong phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log07 của lớp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log09 trong ứng dụng của bạn. Để bắt đầu, hãy xem một ví dụ. Trong ví dụ này, chúng tôi sẽ lên lịch đóng cửa để được gọi mỗi ngày vào lúc nửa đêm. Trong thời gian đóng, chúng tôi sẽ thực hiện truy vấn cơ sở dữ liệu để xóa bảng * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log4 Ngoài việc lên lịch sử dụng các lần đóng, bạn cũng có thể lên lịch. Các đối tượng có thể triệu hồi là các lớp PHP đơn giản có chứa một phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log50 * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log6 Nếu bạn muốn xem tổng quan về các tác vụ đã lên lịch của mình và lần tiếp theo chúng được lên lịch để chạy, bạn có thể sử dụng lệnh Artisan * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log51 Lập kế hoạch lệnh ArtisanNgoài việc lên lịch đóng cửa, bạn cũng có thể lên lịch cho các lệnh Artisan và lệnh hệ thống. Ví dụ: bạn có thể sử dụng phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log52 để lên lịch cho lệnh Artisan bằng cách sử dụng tên hoặc lớp của lệnh Khi lên lịch cho các lệnh Artisan sử dụng tên lớp của lệnh, bạn có thể chuyển một mảng các đối số dòng lệnh bổ sung sẽ được cung cấp cho lệnh khi nó được gọi * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log9 Lên lịch công việc xếp hàng đợiPhương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log53 có thể được sử dụng để lên lịch cho một công việc đã xếp hàng. Phương pháp này cung cấp một cách thuận tiện để lên lịch cho các công việc đã xếp hàng mà không cần sử dụng phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log54 để xác định các bao đóng để xếp hàng cho công việc * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log0 Các đối số thứ hai và thứ ba tùy chọn có thể được cung cấp cho phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log53 chỉ định tên hàng đợi và kết nối hàng đợi sẽ được sử dụng để xếp hàng công việc * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log5 Lập kế hoạch lệnh ShellPhương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log56 có thể được sử dụng để đưa ra lệnh cho hệ điều hành $ cat /tmp/date.log6 Lịch trình tùy chọn tần suấtChúng ta đã thấy một vài ví dụ về cách bạn có thể định cấu hình một tác vụ để chạy theo các khoảng thời gian được chỉ định. Tuy nhiên, có nhiều tần suất lịch trình nhiệm vụ khác mà bạn có thể gán cho một nhiệm vụ Phương thức Mô tả* * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log57Chạy nhiệm vụ theo lịch trình cron tùy chỉnh * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log58Chạy nhiệm vụ mỗi phút * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log59Chạy nhiệm vụ cứ sau hai phút $ cat /tmp/date.log60Chạy nhiệm vụ cứ sau ba phút $ cat /tmp/date.log61Chạy nhiệm vụ cứ sau bốn phút $ cat /tmp/date.log62Chạy nhiệm vụ cứ sau năm phút $ cat /tmp/date.log63Chạy nhiệm vụ cứ sau mười phút $ cat /tmp/date.log64Chạy nhiệm vụ cứ sau mười lăm phút $ cat /tmp/date.log65Chạy nhiệm vụ cứ sau ba mươi phút $ cat /tmp/date.log66Chạy nhiệm vụ mỗi mười phút . 00 * * * * * date>> /tmp/date.log * * * * * sleep 10; date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log * * * * * sleep 50; date>> /tmp/date.log05Chạy nhiệm vụ hàng ngày lúc 1. 00 & 13. 00 * * * * * date>> /tmp/date.log * * * * * sleep 10; date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log * * * * * sleep 50; date>> /tmp/date.log06Chạy nhiệm vụ hàng ngày lúc 1. 15 & 13. 15 * * * * * date>> /tmp/date.log * * * * * sleep 10; date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log * * * * * sleep 50; date>> /tmp/date.log07Chạy nhiệm vụ lúc 00 chủ nhật hàng tuần. 00 * * * * * date>> /tmp/date.log * * * * * sleep 10; date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log * * * * * sleep 50; date>> /tmp/date.log08Chạy nhiệm vụ hàng tuần vào thứ Hai lúc 8 giờ. 00 * * * * * date>> /tmp/date.log * * * * * sleep 10; date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log * * * * * sleep 50; date>> /tmp/date.log09Chạy nhiệm vụ vào ngày đầu tiên hàng tháng lúc 00. 00 $ tail -f /tmp/date.log00Chạy nhiệm vụ hàng tháng vào ngày 4 lúc 15. 00 $ tail -f /tmp/date.log01Chạy nhiệm vụ hàng tháng vào ngày 1 và 16 lúc 13. 00 $ tail -f /tmp/date.log02Chạy nhiệm vụ vào ngày cuối cùng của tháng lúc 15. 00 $ tail -f /tmp/date.log03Chạy nhiệm vụ vào ngày đầu tiên của mỗi quý lúc 00. 00 $ tail -f /tmp/date.log04Chạy nhiệm vụ hàng quý vào ngày 4 lúc 14. 00 $ tail -f /tmp/date.log05Chạy nhiệm vụ vào ngày đầu tiên hàng năm lúc 00. 00 $ tail -f /tmp/date.log06Chạy nhiệm vụ hàng năm vào ngày 1 tháng 6 lúc 17. 00 $ tail -f /tmp/date.log07Đặt múi giờ cho tác vụ Các phương pháp này có thể được kết hợp với các ràng buộc bổ sung để tạo ra các lịch trình tinh chỉnh hơn nữa chỉ chạy vào một số ngày nhất định trong tuần. Ví dụ: bạn có thể lên lịch chạy lệnh hàng tuần vào Thứ Hai * * * * * date>> /tmp/date.log * * * * * sleep 10; date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log * * * * * sleep 50; date>> /tmp/date.log0 Một danh sách các ràng buộc lịch trình bổ sung có thể được tìm thấy dưới đây Phương pháp Mô tả$ tail -f /tmp/date.log08Giới hạn nhiệm vụ vào các ngày trong tuần $ tail -f /tmp/date.log09Giới hạn nhiệm vụ vào các ngày cuối tuần * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log10Giới hạn nhiệm vụ vào Chủ Nhật * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log11Giới hạn nhiệm vụ vào Thứ Hai * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log12Giới hạn nhiệm vụ vào Thứ Ba * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log13Giới hạn nhiệm vụ vào Thứ Tư * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log14Giới hạn nhiệm vụ vào Thứ Năm * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log15Giới hạn nhiệm vụ vào Thứ Sáu * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log16Giới hạn nhiệm vụ vào Thứ Bảy * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log17Giới hạn nhiệm vụ vào các ngày cụ thể * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log18Giới hạn nhiệm vụ vào các ngày bắt đầu và kết thúc để chạy Ràng buộc ngàyPhương pháp * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log12 có thể được sử dụng để giới hạn việc thực hiện một tác vụ trong những ngày cụ thể trong tuần. Ví dụ: bạn có thể lên lịch cho lệnh chạy hàng giờ vào Chủ Nhật và Thứ Tư $ tail -f /tmp/date.log0 Ngoài ra, bạn có thể sử dụng các hằng số có sẵn trên lớp * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log13 khi xác định ngày mà một tác vụ sẽ chạy * * * * * date>> /tmp/date.log * * * * * sleep 15; date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log * * * * * sleep 45; date>> /tmp/date.log1 Giữa những ràng buộc về thời gianPhương pháp * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log14 có thể được sử dụng để giới hạn việc thực thi tác vụ dựa trên thời gian trong ngày * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log1 Tương tự, phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log15 có thể được sử dụng để loại trừ việc thực hiện một tác vụ trong một khoảng thời gian * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log60 Ràng buộc kiểm tra sự thậtPhương pháp * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log16 có thể được sử dụng để giới hạn việc thực hiện một tác vụ dựa trên kết quả của một bài kiểm tra sự thật đã cho. Nói cách khác, nếu bao đóng đã cho trả về * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log17, tác vụ sẽ thực thi miễn là không có điều kiện ràng buộc nào khác ngăn tác vụ chạy * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log61 Phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log18 có thể được coi là nghịch đảo của * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log16. Nếu phương thức * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log18 trả về * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log17, tác vụ theo lịch trình sẽ không được thực thi * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log62 Khi sử dụng các phương thức * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log16 được xâu chuỗi, lệnh đã lên lịch sẽ chỉ thực thi nếu tất cả các điều kiện của * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log16 trả về * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log17 Ràng buộc môi trườngPhương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log605 chỉ có thể được sử dụng để thực thi các tác vụ trên các môi trường nhất định (như được xác định bởi * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log606 ) * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log63 Múi giờSử dụng phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log607, bạn có thể chỉ định rằng thời gian của một nhiệm vụ theo lịch trình sẽ được diễn giải trong một múi giờ nhất định * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log64 Nếu bạn liên tục chỉ định cùng một múi giờ cho tất cả các tác vụ đã lên lịch của mình, bạn có thể định nghĩa một phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log608 trong lớp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log09 của mình. Phương thức này sẽ trả về múi giờ mặc định sẽ được gán cho tất cả các tác vụ đã lên lịch * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log65
Ngăn chặn chồng chéo nhiệm vụTheo mặc định, các tác vụ đã lên lịch sẽ được chạy ngay cả khi phiên bản trước của tác vụ đó vẫn đang chạy. Để ngăn chặn điều này, bạn có thể sử dụng phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log610 * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log66 Trong ví dụ này, lệnh Artisan * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log611 sẽ được chạy mỗi phút nếu nó chưa chạy. Phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log610 đặc biệt hữu ích nếu bạn có các tác vụ thay đổi đáng kể về thời gian thực hiện, khiến bạn không thể dự đoán chính xác thời gian thực hiện một tác vụ nhất định Nếu cần, bạn có thể chỉ định bao nhiêu phút phải trôi qua trước khi khóa "không chồng chéo" hết hạn. Theo mặc định, khóa sẽ hết hạn sau 24 giờ * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log67 Đằng sau hậu trường, phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log610 sử dụng bộ nhớ cache của ứng dụng của bạn để lấy khóa. Nếu cần, bạn có thể xóa các khóa bộ đệm này bằng lệnh Artisan * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log614. Điều này thường chỉ cần thiết nếu một tác vụ bị kẹt do sự cố máy chủ không mong muốn Chạy các tác vụ trên một máy chủ
Nếu bộ lập lịch của ứng dụng của bạn đang chạy trên nhiều máy chủ, bạn có thể giới hạn một công việc đã lên lịch chỉ thực thi trên một máy chủ. Chẳng hạn, giả sử bạn có một nhiệm vụ đã lên lịch để tạo báo cáo mới vào mỗi tối thứ Sáu. Nếu bộ lập lịch tác vụ đang chạy trên ba máy chủ worker, thì tác vụ đã lên lịch sẽ chạy trên cả ba máy chủ và tạo báo cáo ba lần. Không tốt Để chỉ ra rằng tác vụ chỉ nên chạy trên một máy chủ, hãy sử dụng phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log619 khi xác định tác vụ theo lịch trình. Máy chủ đầu tiên nhận nhiệm vụ sẽ đảm bảo khóa nguyên tử trong công việc để ngăn các máy chủ khác chạy cùng một nhiệm vụ cùng một lúc * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log68 Đặt tên công việc máy chủ đơnĐôi khi bạn có thể cần lên lịch gửi cùng một công việc với các tham số khác nhau, trong khi vẫn hướng dẫn Laravel chạy từng hoán vị của công việc trên một máy chủ. Để thực hiện điều này, bạn có thể gán cho mỗi định nghĩa lịch biểu một tên duy nhất thông qua phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log620 * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log69 Tương tự, các lần đóng theo lịch trình phải được gán tên nếu chúng được dự định chạy trên một máy chủ * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log90 Nhiệm vụ nềnTheo mặc định, nhiều tác vụ được lên lịch cùng lúc sẽ thực thi tuần tự dựa trên thứ tự chúng được xác định trong phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log07 của bạn. Nếu bạn có các tác vụ chạy trong thời gian dài, điều này có thể khiến các tác vụ tiếp theo bắt đầu muộn hơn nhiều so với dự kiến. Nếu bạn muốn chạy các tác vụ ở chế độ nền để tất cả chúng có thể chạy đồng thời, bạn có thể sử dụng phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log622 * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log91
Chế độ bảo trìCác tác vụ đã lên lịch của ứng dụng của bạn sẽ không chạy khi ứng dụng ở chế độ , vì chúng tôi không muốn các tác vụ của bạn can thiệp vào bất kỳ hoạt động bảo trì chưa hoàn thành nào mà bạn có thể đang thực hiện trên máy chủ của mình. Tuy nhiên, nếu bạn muốn buộc một tác vụ chạy ngay cả trong chế độ bảo trì, bạn có thể gọi phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log626 khi xác định tác vụ * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log92 Chạy bộ lập lịchBây giờ chúng ta đã học cách xác định các tác vụ theo lịch trình, hãy thảo luận về cách thực sự chạy chúng trên máy chủ của chúng ta. Lệnh * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log627 Artisan sẽ đánh giá tất cả các tác vụ đã lên lịch của bạn và xác định xem chúng có cần chạy hay không dựa trên thời gian hiện tại của máy chủ Vì vậy, khi sử dụng bộ lập lịch của Laravel, chúng ta chỉ cần thêm một mục cấu hình cron duy nhất vào máy chủ để chạy lệnh * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log627 mỗi phút. Nếu bạn không biết cách thêm các mục cron vào máy chủ của mình, hãy cân nhắc sử dụng một dịch vụ như Laravel Forge có thể quản lý các mục cron cho bạn * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log93 Chạy bộ lập lịch cục bộThông thường, bạn sẽ không thêm một mục cron lập lịch trình vào máy phát triển cục bộ của mình. Thay vào đó, bạn có thể sử dụng lệnh * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log629 Artisan. Lệnh này sẽ chạy ở nền trước và gọi bộ lập lịch mỗi phút cho đến khi bạn chấm dứt lệnh Đầu ra nhiệm vụBộ lập lịch của Laravel cung cấp một số phương thức thuận tiện để làm việc với đầu ra được tạo bởi các tác vụ đã lên lịch. Đầu tiên, sử dụng phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log630, bạn có thể gửi đầu ra tới một tệp để kiểm tra sau * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log94 Nếu bạn muốn nối đầu ra vào một tệp nhất định, bạn có thể sử dụng phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log631 * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log95 Sử dụng phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log632, bạn có thể gửi email đầu ra tới địa chỉ email bạn chọn. Trước khi gửi email đầu ra của một tác vụ, bạn nên định cấu hình các dịch vụ email của Laravel * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log96 Nếu bạn chỉ muốn gửi kết quả qua email nếu lệnh Artisan hoặc lệnh hệ thống đã lên lịch kết thúc với mã thoát khác không, hãy sử dụng phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log633 * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log68
Móc nhiệm vụSử dụng các phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log640 và * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log641, bạn có thể chỉ định mã sẽ được thực thi trước và sau khi tác vụ theo lịch trình được thực thi * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log98 Các phương thức * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log642 và * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log643 cho phép bạn chỉ định mã sẽ được thực thi nếu tác vụ theo lịch trình thành công hay thất bại. Lỗi chỉ ra rằng lệnh hệ thống hoặc Thủ công đã lên lịch đã kết thúc bằng mã thoát khác không $ tail -f /tmp/date.log0 Nếu đầu ra có sẵn từ lệnh của bạn, bạn có thể truy cập nó trong các hook * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log641, * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log642 hoặc * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log643 của mình bằng cách gợi ý kiểu một thể hiện * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log647 làm đối số * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log648 của định nghĩa đóng hook của bạn * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log00 URL pingSử dụng các phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log649 và * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log650, bộ lập lịch có thể tự động ping một URL nhất định trước hoặc sau khi một tác vụ được thực thi. Phương pháp này hữu ích để thông báo cho một dịch vụ bên ngoài, chẳng hạn như Envoyer, rằng tác vụ theo lịch trình của bạn đang bắt đầu hoặc đã hoàn thành thực thi $ tail -f /tmp/date.log0 Các phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log651 và * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log652 chỉ có thể được sử dụng để ping một URL nhất định nếu một điều kiện nhất định là * * * * * date>> /tmp/date.log * * * * * sleep 20; date>> /tmp/date.log * * * * * sleep 40; date>> /tmp/date.log17 * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log02 Các phương pháp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log654 và * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log655 chỉ có thể được sử dụng để ping một URL nhất định nếu tác vụ thành công hoặc thất bại. Lỗi chỉ ra rằng lệnh hệ thống hoặc Thủ công đã lên lịch đã kết thúc bằng mã thoát khác không * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log03 Tất cả các phương thức ping đều yêu cầu thư viện Guzzle HTTP. Theo mặc định, Guzzle thường được cài đặt trong tất cả các dự án Laravel mới, nhưng bạn có thể cài đặt Guzzle theo cách thủ công vào dự án của mình bằng trình quản lý gói Composer nếu nó vô tình bị xóa * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log04 Sự kiệnNếu cần, bạn có thể nghe các sự kiện được gửi bởi bộ lập lịch. Thông thường, ánh xạ trình xử lý sự kiện sẽ được xác định trong lớp * * * * * date>> /tmp/date.log * * * * * sleep 30; date>> /tmp/date.log656 của ứng dụng của bạn Làm cách nào để chạy tập lệnh PHP sau mỗi 10 giây?Việc sử dụng Jquery và ajax cho phép gọi một yêu cầu XHR mỗi khoảng mili giây đã đặt (setInterval) . Trong trường hợp này, nó là 10000 mili giây trong 10 giây. Tập lệnh bên dưới được lưu trữ tại (chạy. html) khi được gọi sẽ liên tục chạy yêu cầu nhận để gọi.
Cron có thể chạy mỗi giây không?Cron chỉ hỗ trợ khoảng thời gian ít nhất là 60 giây (i. e 1 phút). Để chạy một công việc định kỳ cứ sau 30 giây, bạn cần sử dụng thủ thuật mà chúng tôi đã giải thích bên dưới. Trong hướng dẫn này, chúng tôi cũng sẽ đề cập đến nhiều ví dụ khác để chạy một công việc hoặc lệnh hoặc tập lệnh mỗi giây.
Được sử dụng để chỉ định cứ sau 10 phút trong Cronjob?Toán tử gạch chéo giúp viết cú pháp dễ dàng để chạy một công việc Định kỳ sau mỗi 10 phút. Trong lệnh này, */10 sẽ tạo danh sách phút sau mỗi 10 phút.
Làm cách nào để gọi một công việc định kỳ trong PHP?Công việc định kỳ với PHP và loại tệp khác . PHP. Lệnh chạy cron job PHP5. php/home/tên người dùng/public_html/cron. php. . perl. Lệnh chạy CGI cron job. perl/home/tên người dùng/public_html/cgi-bin/tệp. làm ơn SSH. Lệnh chạy cron job shell script. /bin/sh/home/tên người dùng/public_html/tệp. sh mysql |