聊聊php定時計畫任務

2021-09-20 16:09:36 字數 1312 閱讀 4384

1、伺服器計畫任務

win伺服器可以直接使用定時任務執行相關的應用程式,linux伺服器則可以通過在/etc/crontab裡新增定時任務來實現。

2、通過死迴圈實現任務自動執行

建立乙個程式檔案頁面,通過ignore_user_abort來設定關閉瀏覽器頁面後仍可執行,那麼,在執行該程式頁面後,您所需要的任務計畫便會一直自動執行。對於一般的php程式設計師來說,如果沒有足夠的把握,這種操作是不被允許的,因為死迴圈極容易使用伺服器當機。

3、觸發式定時任務

在我所了解的幾套程式中,像discuz、帝國cms等等,均使用這種方式來完成系統的定時任務,相對前面的兩種方法,這是最為安全和簡單的。

discuz:

在您設定的計畫任務執行時刻,如果有人訪問您的站點,計畫任務才會執行;如果那個時刻沒有人訪問您的站點,一直到有人訪問時才執行計畫任務。

大概有那麼幾種方法:

1.linux系統

定時直接可以用cron來執行乙個php指令碼 或者其他語言的指令碼[你要有足夠的系統許可權]

執行編輯cron命令

1

crontab-e

比如每隔5分鐘執行下 /root/bin目錄下的test.php指令碼

*/5 * * * * php /root/bin/test.php

2.windows系統

可用計畫任務執行指令碼,不舉例

那麼, 如果需要用php定時執行某些任務的話, 可以有以下幾個方法:

1、linux下crontab, windows下計畫任務

2、找個被頻繁呼叫的網頁, 裡面加上乙個檢測**

3、set_time_limit(0);

ignore_user_abort(true);

死迴圈第一種:方法是最常見的, 但也是最靠譜的,如果php伺服器上沒有許可權去crontab, 也可以找乙個自己的機器定期crontab去請求伺服器

第二種:方法, 論壇上定時清理新帖基本上就是這麼實現的, 如果人氣不旺的話, 可以考慮去別的火爆點的論壇裡面發個, 呼叫自己的php來實現乙個trigger就好了。 discuz!是判斷在00:00之後,第乙個執行者去執行的。

第三種:最不靠譜, apache重啟了就得重新訪問,  fastcgi倒是會好一點。

網上參考:

php定時計畫任務的例子

php定時計畫任務需要兩個檔案。1,jbxue.conf.php 當為0時,關閉計畫任務 return 1 2,jbxue.php ignore user abort 關掉瀏覽器,php指令碼也可以繼續執行.set time limit 0 通過set time limit 0 可以讓程式無限制的執...

MySQL定時計畫任務

5.1版本以後,mysql支援定時執行 event 的功能,就跟linux的crontab差不多。一 先檢視一下你的msyql版本,查詢版本資訊的sql語句 sql select version 確定版本支援之後,再檢視一下event是否開啟 二 檢視是否開啟event 1 mysql event功...

ansible windows 定時計畫任務

ansible使用win shell模組執行windows命令。ansible all m win shell a schtasks create sc daily tn restart tr c windows system32 shutdown.exe r f t 1 st 02 00 建立定時...