[Help] - Cần hướng dẫn chạy cron job trên server

Jeremy Nguyen hỏi trong Lập trình 3 tuần trước

Mình dùng laravel 5.5, bây giờ có yêu cầu thực hiện xoá những request tour của user A đến user B nếu sau 3 ngày mà ko có phản hồi gì. Mình đã tạo schedule và ý định chạy 1 tiếng 1 lần để check created_at và status của request để xoá nó đi.

Mình đã thử run * * * * * php /var/www/html/artisan schedule:run >> /dev/null 2>&1 khi ssh vào server và cả crontab -e để add dòng lệnh đó vào. Nhưng hình như nó đều ko hoạt động.

2 câu trả lời

Đầu tiên bạn nên kiểm tra xem command của bạn đã chạy đúng chưa, nếu command đã chạy đúng rồi thì bạn kiểm tra lại cách config cronjob của bạn đã đúng chưa.

Để kiểm tra command của bạn đã chạy đúng chưa thì vào command line gõ lệnh:

php artisan 'comand-signature'

sau khi chạy lệnh xong thì hãy kiểm tra lại kết quả trong database của bạn xem có cập nhật không.

Để kiểm tra config cronjob gõ lệnh:

sudo crontab -l

nếu không có cron nào được setup thì hãy thử setup lại 1 cron job khác qua lệnh

sudo crontab -e

có thể ban đầu bạn setting không có quyền root.

Theo như doc trên laravel thì bạn có thể setting cronjob qua dòng sau:

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Theo mình để ý thì bạn đang setting

* * * * * php /var/www/html/artisan schedule:run >> /dev/null 2>&1 

đang bị thiếu phần path-to-your-project, có thể đường dẫn đúng là

/var/www/html/tour/artisan

1 điều cần lưu ý là phần

* * * * *

đang có nghĩa là chạy theo từng phút nhé, để setting chạy theo từng giờ thì bạn nên đổi tham số ở phần này.