PHP Crontab Flock實現定時任務

2021-09-27 10:49:16 字數 1853 閱讀 2922

crontab是乙個unix/linux系統下的常用定時執行任務

安裝crontab

yum install vixie-cron crontabs  //vixie-cron軟體包為cron的主程式,crontabs是用來安裝、解除安裝、列舉程序**的程式

chkcofig crond on  //開機自啟動

service crond start   //啟動

新增crontab定時任務

crontab -e  //開啟crontab檔案,會預設以vi方式開啟

格式minute

hour

dayofmonth

month

dayofweek

command

注釋分鐘

小時日期月份周

命令取值範圍

0-59

0-23

1-31

1-12

0-7(0和7都代表週日)

常用符號

符號注釋

*所有有效的值

,分割開設定多個值

-一段時間範圍

/n隔n長時間

eg:*/3 9-17 1,15,25 * * command  //每個月的1、15、15號的9點至17點每隔3分鐘執行一次command命令

檢視crontab定時任務

crontab -l

為防止上次指令碼沒有執行完,下個指令碼重複執行可以使用flock鎖防止程序衝突

使用方法,建立crontab定時任務時,指定flock,eg:

*/1 * * * * flock -xw 10 command   //每一分鐘執行一次command,如果上次任務沒有完成等待10s後重試

flock常用引數:-h,--help

-s,--shared  獲取乙個共享鎖  

-x,--exclusive 獲取乙個獨佔鎖

-n,--nonblock 沒有立即獲得鎖,直接失敗

-w,--timeout  沒有立即獲得鎖,等待指定時間,單位為秒

-c,--command 在shell中執行乙個單獨的命令

命令1:(不加鎖/加鎖  絕對路徑)

* * * * * /bin/php /home/run.php >> /home/run.log 2>&1
* * * * * flock -xn /tmp/run.lock -c '/bin/php /home/run.php >> /home/run.log 2>&1'
注釋: /temp/run.lock  用於判斷檔案是否已加鎖,一般命名為: filename.lock

/bin/php       php可執行檔案的位置

/home/run.php  要執行的php檔案的具體位置,檔名為filename.php

>>  表示將執行php檔案的輸出以追加的方式進行重定向

/home/run.log  執行指令碼產生的日誌檔案的位置,一般命名為filename.log

(同一條命令中最好保持

filename相同)

標準輸入stdin 、標準輸出stdout 、 標準錯誤stderr,對應的系統檔案的檔案描述符為0、1、2 

& 等同與,2>&1 表示標準錯誤重定向到標準輸出中

命令2:(不加鎖/加鎖  相對路徑)

* * * * * cd /home; /bin/php run.php >> ./run.log 2>&1
* * * * * cd /home; flock -xn /tmp/run.lock -c '/bin/php run.php >> ./run.log 2>&1'

django 實現定時任務

的首頁頻繁被訪問,為了提公升訪問速度,除了我們之前已經學過的使用快取技術外,還可以使用頁面靜態化技術。頁面靜態化即將動態渲染生成的頁面結果儲存成html檔案,放到靜態檔案伺服器中。使用者訪問的時候訪問的直接是處理好之後的html靜態檔案。對於頁面中屬於每個使用者展示不同資料內容的部分,可以在使用者請...

spring boot 實現定時任務

參考 第一步 編寫乙個 job 類,需要實現 org.quartz.job 介面 import org.quartz.job import org.quartz.jobexecutioncontext import org.quartz.jobexecutionexception public cl...

django實現定時任務

目的 解決執行django專案的時候一起執行自己寫的py檔案 一 類別 linux celery和django crontab外掛程式 windows apscheduler django apscheduler,3.註冊後資料遷移 python manage.py migrateimport ti...