如果你想使用此方法必須滿足以下條件:
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 儲存該命令 延時任務的常見命令 延時任務的黑名單 延時任務白...