在php學習和工作生活中,經常需要定時去執行任務,一般可以分為純**實現和借助linux的定時任務管理器cron.d或者crontab來實現。
1.先來說一下純**是如何實現的。
<?php
ignore_user_abort();//關閉瀏覽器仍然執行
set_time_limit(0);//讓程式一直執行下去
$interval=3;//每隔一定時間執行 3代表3s
dowhile(true);
?>
這是乙個基本的定時器,但是這個定時器有乙個缺陷,因為while的判定條件是true,一旦這個程式執行就不可控制了,除非重啟伺服器或者關機,非常麻煩。現在可以加入乙個控制條件,來控制這個定時器的開與關。
新建乙個controller.php
<?php
return 1;//1執行指令碼 0退出執行指令碼
?>
定時器timer.php改為
<?php
ignore_user_abort();//關閉瀏覽器後,繼續執行php**
set_time_limit(0);//程式執行時間無限制
$sleep_time = 5;//多長時間執行一次
$switch = include 'switch.php';
while($switch)
exit();
?>
這就是純**實現定時任務的基本方法了,但是存在侷限性。現在再來介紹一下linux的定時任務管理器,cron.d或者crontab。
2.cron.d增加定時任務
當我們要增加全域性性的計畫任務時,一種方式是直接修改/etc/crontab。但是,一般不建議這樣做,/etc/cron.d目錄就是為了解決這種問題而建立的。
例如,增加一項定時的備份任務,我們可以這樣處理:在/etc/cron.d目錄下新建檔案backup.sh,內容如下:
# m h dom mon dow user command
* 1 * * * root /sbin/mon_zetc_logtar.sh
cron程序執行時,就會自動掃瞄該目錄下的所有檔案,按照檔案中的時間設定執行後面的命令。
cron執行時,也就是要讀取三個地方的配置檔案:一是/etc/crontab,二是/etc/cron.d目錄下的所有檔案,三是每個使用者的配置檔案。
所以在我們就可以使用php**中在/etc/cron.d目錄下新建*.s**件,然後將定時任務寫入*.s**件中,這樣就完成了cron.d增加定時任務。
3.crontab增加定時任務
一般,使用crontab -e命令來編輯定時任務列表,將定時任務寫入列表中。
如何用php**設定crontab,具體看下面**例子。
<?php
/*filename: phpcrontab.php
comment: php 控制linux crontab 命令
user: lxd
time: 15/11/13 13:55
*/class phpcrontab );
$this->_crontab_obj = new crontabmanager();}/*
* 新增任務
* @param id 任務唯一標示符,自己資料庫的,方便自己後期處理
* @param time 任務執行時間
* @param job 任務具體內容
** @return false | 任務自身的id標誌
*/public function addjob($id,$time,$job)
return false;}/*
* 獲取任務列表
* @param void
* @return array
*/public function getjoblist()
/** 清理一條任務
* @param 任務自身的id
* @return true | false
*/function deletejob($job = null)
if (!preg_match('/' . $job . '/', $oldjob)) else }}
}$this->jobs = $data;
}return $jobsdeleted;}/*
* 析構
*/public function destruct()
}
然後在需要操作crontab的地方引用該檔案,例項化類,新增定時任務就可以了。希望可以幫到大家,謝謝。 linux定時任務 at定時任務
at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...
PHP 和 Linux,分別實現定時任務
參考 php函式 linux crontab 這個可根據業務需求在專案後台做成配置頁面,運營人員也可配置。開始任務 public function startcrond id 終止任務 public function abortcrond id 執行任務 public function execcr...
linux建立PHP定時任務
下面所有的前提是伺服器存在php環境 首先建立乙個php檔案 示例內容如下 ch curl init 設定請求 curl setopt ch,curlopt url,寫上要請求的url curl setopt ch,curlopt returntransfer,1 curl setopt ch,cu...