本文目錄一覽:
- 1、php定時執行任務的幾個方法
- 2、PHP後台任務運行
- 3、如何在Win7下添加任務計劃執行php腳本文件
- 4、Windows中使用計劃任務自動執行PHP程序實例
- 5、php定時執行任務怎麼寫?
- 6、如何實現php定時執行任務,且時間是可配置的
php定時執行任務的幾個方法
PHP定時執行的三種方式實現
1、windows 的計劃任務 2、linux的腳本程序 3、讓web瀏覽器定時刷新
具體實現
1、windows計劃任務
PHP很少在win服務器上跑,具體實現也不再深究,看網上實現的原理大概是寫bat腳本,然後讓window任務添加執行這個bat腳本。
2、linux 的腳本實現
這裡主要使用到crontab這個命令,
使用方式 :
複製代碼 代碼如下:crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
說明 :
crontab是用來讓使用者在固定時間或固定間隔執行程式之用
使用crontab寫shell腳本,然後讓PHP調用shell,這個是利用linux的特性,應該還不算PHP自身語言的特性
3、PHP實現定時執行計劃任務
使用php讓瀏覽器刷新需要解決幾個問題
PHP腳本執行時間限制,默認的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設置max_execution_time時間(不推薦)
如果客戶端瀏覽器關閉,程序可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執行
如果程序一直執行很有可能會消耗大量的資源,解決辦法使用sleep使用程序休眠一會,然後在執行
PHP定時執行的代碼:
?php ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續執行. set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執行下去 $interval=5;// 每隔5s運行 //方法1–死循環 do{ echo ‘測試’.time().’br/’; sleep($interval);// 等待5s }while(true); //方法2—sleep 定時執行 require_once ‘./curlClass.php’;//引入文件 $curl = new httpCurl();//實例化 $stime = $curl-getmicrotime(); for($i=0;$i=10;$i++){ echo ‘測試’.time().’br/’; sleep($interval);// 等待5s } ob_flush(); flush(); $etime = $curl-getmicrotime(); echo ‘hr’; echo round(($etime-stime),4);//程序執行時間
測試的時候發現這個效率並不是很高。
總結:
個人感覺PHP定時執行任務的效率不是很高,建議關於定時執行任務的工作還是交給shell來做吧。
PHP後台任務運行
在運行前 先要了解一下 什麼是文件描述符。
什麼是文件描述符?
文件描述符是一個簡單的正整數,用以標明每一個被進程所打開的文件和socket。
最前面的三個文件描述符(0,1,2)分別與標準輸入(stdin),標準輸出(stdout)和標準錯誤(stderr)對應。
“21 file”和 ” file 21″區別?
1.php test.php 21 file :錯誤輸出到終端,標準輸出被重定向到文件file。
2.php test.php file 21 :標準輸出被重定向到文件file,然後錯誤輸出也重定向到和標準輸出一樣,所以錯誤也輸出到文件file。
nohup命令可以在用戶退出終端後仍然執行程序,
“21 /dev/null”表示不顯示標準輸出和錯誤輸出,
最後的表示推到後台執行。
如何在Win7下添加任務計劃執行php腳本文件
方法/步驟
1
這裡先說說winxp下的任務計劃設置步驟:
(1).開始;
(2).控制面板;
(3).任務計劃;
(4).添加任務計劃;
(5).瀏覽等操作。
2、在win7下,首先點擊開始;
3、點擊:管理工具;
4、點擊:任務計劃程序;
5、點擊:創建任務;
6、輸入任務名稱和描述;
7、鼠標點擊,操作選項卡;
8、點擊:新建;
9、點擊瀏覽,並選擇要執行的腳本文件(比如這裡演示的是
testPHP.bat內容如下圖:
10、php內容如下圖:
11、最後點擊確定按鈕。
12、定時任務成功執行。
Windows中使用計劃任務自動執行PHP程序實例
所謂任務計劃就是由計算機自動調用用戶事先設置好的應用程序,從而達到簡化用戶操作的目的。利用Windows
2000的任務計劃程序(相當與*NIX下的cron程序,這裡不再對其詳述),我們可以安排任何腳本、程序或文檔在最恰當的時候運行,從而滿足自己的需要。下面以Windows
2000為例。
具體來說,我們若需利用任務計劃程序自動運行則應執行如下步驟:
單擊”開始”按鈕,然後依次選擇”程序”→”附件”→”系統工具”→”任務計劃”(或者是”設置”→”控制面板”→”任務計劃”),啟動Windows
2000的任務計劃管理程序。
在”任務計劃”窗口中雙擊”添加任務計劃”圖標,啟動系統的”任務計劃嚮導”,然後單擊”下一步”按鈕,在給出的程序列表中選擇需要自動運行的應用程序,然後單擊”下一步”按鈕。
設置適當的任務計劃名稱並選擇自動執行這個任務的時間頻率(如每天、每星期、每月、一次性、每次啟動計算機時、每次登錄時等),然後單擊”下一步”按鈕。
此時系統將會要求用戶對程序運行的具體時間進行設置,如幾號、幾點鐘、哪幾個時間段才能運行等,我們只需根據自己的需要加以設置即可。
接下來系統將會要求用戶設置適當的用戶名及密碼(如圖5所示),以便系統今後能自動加以運行。
最後,我們只需單擊”完成”按鈕即可將相應任務添加到Windows
2000的任務計劃程序中,此後它就會自動”記住”這個任務,一旦系統時間及相關條件與用戶設置的計劃相符,它就會自動調用用戶所指定的應用程序,十分方
便(每次啟動Windows
2000的時候,任務計劃程序都會自動啟動,並在後台運行,確保用戶的計劃能夠按時執行)。
現在我們來測試一下剛才所建的任務是否成功,鼠標右鍵單擊”php”程序圖標(如圖6所示),在彈出的菜單裡面選擇”運行”。一般情況下程序圖標只要這樣
激活運行就可以正常啟動。如果運行失敗可查看用戶和密碼是否設置正確,還有確定”Task
Scheduler”服務是否已啟動,本人當初就是為了節省系統資源把它關掉了導致運行失敗,害我找了大半天。另外也可從”系統日誌”里查看到底是什麼原
因造成運行失敗的。
好了,講了這麼多任務計劃的應用,現在我們切入正題,下面將介紹兩個例子:
一、讓PHP定時運行
編輯如下代碼,並保存為test.php:
複製代碼
代碼如下:
?php
$fp
=
@fopen(“test.txt”,
“a+”);
fwrite($fp,
date(“Y-m-d
H:i:s”)
.
“
讓PHP定時運行吧!\n”);
fclose($fp);
?
php定時執行任務怎麼寫?
藉助crontab來編寫;
編寫定時執行腳本(單獨的一個php文件,或者某個方法);
配置crontab,指定執行路徑地址;
啟動crontab服務即可。
如何實現php定時執行任務,且時間是可配置的
linux下可以 crontab執行如(crontab -e編輯,crontab -l查看)0 1 * * * php test.php #每天01:00執行一次test.php*/5 * * * * php test.php #每5分鐘執行一次test.phpphp自身實現:可sleep實現
?php
function func()
{
//實現要做的事
}
while(true)
{
sleep($n);//$n為秒數
func();
}
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/197933.html