PHP 簡單 延時任務

2021-09-13 09:06:11 字數 1266 閱讀 5565

如果你想使用此方法必須滿足以下條件:

1、您有crontab操作許可權(目前某些虛擬主機也能做到,詳情請檢查你的控制面板);

2、您可以接受1~59秒的誤差(crontab執行的最小間隔為1分鐘)。

邏輯為在程式中把要延時執行的資料儲存到乙個www資料夾外的一些檔案中,並以生成時的時間戳命名,用crontab定時任務定時執行乙個shell指令碼掃瞄資料夾,如果資料夾中存在比現在的時間戳小的檔名,即有已經過時的檔案,即立即執行乙個php檔案來對這些檔案進行處理。

首先,寫乙個shell腳步 test.sh

!/bin/bash

#要讀取的資料夾

path="/home/cfucome/notification/file"

#遍歷資料夾,資料夾下的檔名為生成時的時間戳

for file_a in

$/*; do

temp_file=`basename $file_a`

#當前時間戳

now_time=$(date +%s)

#如果檔名小於當前時間戳,即執行php檔案

if [ "$temp_file" -le "$now_time" ] ;then

$(php /home/cfucome/notification/test.php)

exit0fi

done

此指令碼的意思為:遍歷path下的檔案,如果此檔案的檔名小於當前時間戳,即為已經過時,即執行test.php這個php檔案

test.php中的**:

//開啟資料夾

$handle = opendir('./file');

//迴圈讀取資料夾中的檔案

while($file = readdir($handle))

//如果檔名小於當前的時間戳,即讀取檔案中的資料,進行操作

if($file$dataarr = array();

$path = './file/'.$file;

//讀取資料

$data = file_get_contents($path);

//進行操作

//操作完成之後把檔案刪除

unlink($path);

}}

然後新建乙個crontab任務,每分鐘或其他間隔執行一次:

/bin/bash /home/cfucome/notification/test.sh

用定時執行shell指令碼這種方法的原因是,這樣佔記憶體比較小。

延時任務與定時任務

1.延時任務 at命令的使用 1 開啟終端,在根目錄下建立乙個新的目錄取名為 at 2 進入 at目錄下,執行watch n 1 ls l at命令,對其進行監控 3 同時開啟另乙個終端,執行命令 at 某個將來的具體時刻 表示將來在某個時刻執行你特定的操作 例如下圖便是在17 20在 at目錄下建...

延時任務和定時任務

1.at 延時 at l 檢視任務 at r 任務編號 刪除任務 etc at.allow 白名單,白名單中存在的使用者可以使用at,白名單優先順序高,黑白名單中使用者同時存在,白名單生效 etc at.deny 黑名單,存在的使用者不能使用at 2.crontab 定時 由crond.servic...

Linux 延時任務與定時任務

延時任務 系統的延時任務是通過at命令是實現的,負責這個延時任務的服務是atd服務,通常這個服務是預設開啟的 延時任務的發起過程 1 at time 表示在某一時刻發起任務 2 dosomething 任務具體執行的內容 3 ctrl d 儲存該命令 延時任務的常見命令 延時任務的黑名單 延時任務白...