1、windows 的計畫任務
2、linux的指令碼程式
3、讓web瀏覽器定時重新整理
php很少在win伺服器上跑,具體實現也不再深究,看網上實現的原理大概是寫bat指令碼,然後讓window任務新增執行這個bat指令碼:
在網上找了些windows執行php的計畫任務的方法,有乙個寫得很全,可惜在我這竟然沒通過。最後不得不綜合各門派的方法,才能在我這執行成功。
1、寫乙個php程式,命名為test.php,內容如下所示:
<?
$fp= fopen("
test.txt",
"a+")
; fwrite
($fp
, date("
y-m-d h:i:s")
. "成功成功了!\n"
);fclose
($fp);
?>
程式大膽地寫,什麼include\require儘管用,都沒問題
2、新建bat檔案,命名為test.bat,內容如下所示:d
:\php
\php
.exe-q
d:\website
\test
.php
//相應目錄自己改上
3、建立windows計畫任務:
開始–>控制面板–>任務計畫–>新增任務計畫
瀏覽資料夾選擇上面的bat檔案
設定時間和密碼(登陸windows的)
儲存即可了。
4、over! 可以右鍵計畫任務點「執行」試試
這裡主要使用到crontab這個命令,
使用方式 :
crontab
filecrontab[-
uuser][
-uuser]
說明 :
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用
使用crontab寫shell指令碼,然後讓php呼叫shell,這個是利用linux的特性,應該還不算php自身語言的特性
我們的php程式有時候需要定時執行,我們可以使用ignore_user_abort函式或是在頁面放置js讓使用者幫我們實現。但這兩種方法都不太可靠,不穩定。我們可以借助linux的crontab工具來穩定可靠地觸發php執行任務。
下面介紹crontab的兩種方法。
一、在crontab中使用php執行指令碼
就像在crontab中呼叫普通的shell指令碼一樣(具體crontab用法),使用php程式來呼叫php指令碼。
每一小時執行myscript.php如下:
# crontab -e 00
* * * * /
usr/
local
/bin
/php
/home
/john
/myscript
.php
/usr/local/bin/php為php程式的路徑。
二、在crontab中使用url執行指令碼
如果你的php指令碼可以通過url觸發,你可以使用lynx或curl或wget來配置你的crontab。
下面的例子是使用lynx文字瀏覽器訪問url來每小時執行php指令碼。lynx文字瀏覽器預設使用對話方式開啟url。但是,像下面的,我們在lynx命令列中使用-dump選項來把url的輸出轉換來標準輸出。
:下面的例子是使用curl訪問url來每5分執行php指令碼。curl預設在標準輸出顯示輸出。使用」curl -o」選項,你也可以把指令碼的輸出轉儲到臨時檔案。*/5
:下面的例子是使用wget訪問url來每10分執行php指令碼。-q選項表示安靜模式。」-o temp.txt」表示輸出會傳送到臨時檔案。
:php指令碼執行時間限制,預設的是30m 解決辦法:set_time_limit();或者修改php.ini 設定max_execution_time時間(不推薦)
如果客戶端瀏覽器關閉,程式可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執行
如果程式一直執行很有可能會消耗大量的資源,解決辦法使用sleep使用程式休眠一會,然後在執行
Python實現定時執行任務的三種方式簡單示例
1.定時任務 import time,os,sched schedule sched.scheduler time.time,time.sleep defperform command cmd,inc os.system cmd print task def timming exe cmd,inc ...
Python實現定時執行任務的三種方式簡單示例
1.定時任務 user bin env python time 201程式設計客棧8 6 7 16 31 author pgidysq file performtasktimer.py 定時執行任務命令 import time,os,sched schedule sched.scheduler ti...
PHP實現定時執行任務的方法
這篇文章主要介紹了php實現定時執行任務的方法,涉及到ignore user abort函式忽略指令碼終止的使用及sleep函式延緩執行等的應用,需要的朋友可以參考下 ignore user abort true 客戶端斷開時忽略指令碼中止 允許指令碼一直執行 set time limit 0 設定...