1.在代碼里面寫調度任務衫生,在Console文件夾下面Kernel.php寫調取任務命令
2.在Commands文件夾下面創(chuàng)建相應的任務文件
3.在本地上面跑一下看看代碼是否走通权纤,在項目目錄下運行?
php?artisan?schedule:run 1>> storage/logs/null 2>&1
storage/logs/null表示在storage/logs下面創(chuàng)建null任務文件
4.測試通過,部署到服務器上凳鬓,
在命令行輸入
crontab -e
再輸入
* * * * * /usr/local/php/bin/php /home/wwwroot/cron.test/cron/artisan schedule:run 1>> /home/wwwroot/cron.test/cron/storage/logs/null 2>&1
解釋:/usr/local/php/bin/php 表示我的php安裝目錄(如果你的php配置的全局,可以直接php)
/home/wwwroot/cron.test/cron/artisan artisan能運行的位置(在項目目錄下直接操作可以直接 artisan)
5.在命令行中運行:/sbin/service crond reload //重新載入配置
在命令行中運行/sbin/service crond restart //重啟服務
正常運行(ok)
6.常見錯誤以及報錯:
6.1查看storage\logs中的日志錯誤(建議先刪除所有,vim是dG)
直接跑一下
/usr/local/php/bin/php /home/wwwroot/cron.test/cron/artisan schedule:run 1>> /home/wwwroot/cron.test/cron/storage/logs/null 2>&1
正常運行說明(命令代碼都沒錯)crontab -e 中哪里有錯系吩,仔細看一下(我就是多寫了個一個字母)
6.2如果報:The Process class relies on proc_open, which is not available on your PHP installation
解決方法:(先找到php的安裝位置(which php),然后(find -name php.ini))
打開php.ini徘郭,并搜索disable_functions指令(/disable_functions)靠益,找到類似如下內容:
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
找到proc_open并刪除即可。(注意重啟一下)
然后再次運行
參考地址
```
https://www.oldboyedu.com/zuixin_wenzhang/index/id/279.html
```
crond解釋:
文件crontab中每行任務的描述格式如下:
minute? hour? day? month? dayofweek? ?command
```
minute- 從0到59的整數(shù)
hour- 從0到23的整數(shù)
day- 從1到31的整數(shù) (必須是指定月份的有效日期)
month- 從1到12的整數(shù) (或如Jan或Feb簡寫的月份)
dayofweek- 從0到7的整數(shù)残揉,0或7用來描述周日 (或用Sun或Mon簡寫來表示)
command- 需要執(zhí)行的命令(可用as ls /proc >> /tmp/proc或 執(zhí)行自定義腳本的命令)
```
分鐘(0-59)
小時(0-23)
日期(1-31)
月份(1-12)
星期(0-6)?//0代表星期天
除了數(shù)字還有幾個個特殊的符號就是"*"胧后、"/"和"-"、","抱环,*代表所有的取值范圍內的數(shù)字壳快,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數(shù)字到某個數(shù)字,"