php執行定時任務 linux使用crontab執行定時腳本超詳細


 

今天做項目的時候需要用到定時任務給給用戶發送數據,每天早上給用戶推送消息,項目采用thinkphp搭建的,然而tp5沒有合適的方式,通過搜索總結到使用crontab才是最高效的方式,以下給大家帶來使用方式。
#1.首先登陸linux服務器,crontab -l,使用service crond status查看運行狀態

 
查看crontab 任務列表

顯然,本centos已經安裝了crontab ,若系統沒有安裝,請自行安裝測試。

 

2.建立php文件(php腳本)

2.1然后手動編寫一個測試腳本,本人在數據庫中建立了一張表t,同時設置id自增長與i字段;

 
數據表

2.2建立php文件,這里我建立了一個1.php文件,代碼如下:

<?php $link = mysqli_connect( '****', /* The host to connect to 連接MySQL地址 */ 'root', /* The user to connect as 連接MySQL用戶名 */ '****', /* The password to use 連接MySQL密碼 */ 'dbname'); /* The default database to query 連接數據庫名稱*/ if (!$link) { printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error()); exit; }else{ $sql="insert into t(i) values('123456')"; if ($link->query($sql) == TRUE) { echo "成功插入"; } else { echo "插入失敗" ; } } /* Close the connection 關閉連接*/ mysqli_close($link); 

2.3將改文件上傳至服務器目錄中,這里我上傳的目錄為/home/centos/1.php ,然后查看權限是否為777,若不是着chmod 777 /home/centos/1.php 更改權限

3.使用crontab添加php定時任務

3.1使用命令將我們的定時任務加進入

在控制台輸入crontab -e,此時我們會進去vi編輯模式,按i鍵進入編輯模式,編寫我們的定時任務,若不小心輸出錯誤:q!退出,:wq保存!
前兩個是系統自帶的自動執行任務,小白不懂,不管它,我們在后面追加自己的定時任務代碼,以下六行是每隔十秒執行php腳本

*/1 * * * * /usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 & 0 0 * * * /usr/local/qcloud/YunJing/YDCrontab.sh > /dev/null 2>&1 & * * * * * /usr/local/bin/php /home/centos/1.php * * * * * sleep 10; /usr/local/bin/php /home/centos/1.php * * * * * sleep 20; /usr/local/bin/php /home/centos/1.php * * * * * sleep 30; /usr/local/bin/php /home/centos/1.php * * * * * sleep 40; /usr/local/bin/php /home/centos/1.php * * * * * sleep 50; /usr/local/bin/php /home/centos/1.php 

然后我們重啟crontab,避免不執行。service crond restart,然后觀察我們的數據表是否正常插入數據。

注意事項

本人第一次運行沒有執行成功,到處找問題,看了運行日志不懂,這里執行失敗一定要看三點,一文件權限,二,php文件的路徑,三php的安裝路徑。一定仔細。本人就是/usr/local/bin/php路徑出錯,自己進入目錄發現沒有php

 
image.png

當然你可以使用 which php命令查看自己的php路徑,一定確保准確。
 
image.png

修改腳本為

 

* * * * * sleep 10; /usr/local/bin/php /home/centos/1.php * * * * * sleep 20; /usr/bin/php /home/centos/1.php * * * * * sleep 30; /usr/bin/php /home/centos/1.php * * * * * sleep 40; /usr/bin/php /home/centos/1.php * * * * * sleep 50; /usr/bin/php /home/centos/1.php 

查看定時任務,並重啟定時任務


 
image.png

查看我們的數據表,發現表中在不斷的自動添加數據,成功完成。


 
image.png

crontab知識的補充
minute hour day month week command

其中:

minute: 表示分鍾,可以是從0到59之間的任何整數。

hour:表示小時,可以是從0到23之間的任何整數。

day:表示日期,可以是從1到31之間的任何整數。

month:表示月份,可以是從1到12之間的任何整數。

week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。

command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。

 

 


鏈接:https://www.jianshu.com/p/21eebd439b1c


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM