Windows中php任務計劃定時執行PHP代碼及擴展

因爲在項目中有個需求是大批量的數據自動計算後插入更新到數據庫中,爲避免佔用正常資源,需要在固定時間段進行自動計算,因爲項目服務器是windows server2012,就考慮用windows平臺強大的任務計劃程序來實現。

此外在網上找了這類似問題的解決辦法後,還可用PHP的ignore_user_abort()函數,這個函數還沒使用過,PHP官網是這樣介紹的

int ignore_user_abort ([ string $value ] )

設置客戶端斷開連接時是否中斷腳本的執行 ,PHP以命令行腳本執行時,當腳本終端結束,腳本不會被立即中止,除非設置 value 爲 TRUE,否則腳本輸出任意字符時會被中止。

個人理解就是不通過瀏覽器來執行,而是通過命令行方式執行的情況下,此函數的代碼塊繼續執行。在這篇博文中有具體地通過此函數的實現過程。

下面是一個測試用的例子。

windows批處理文件

新建文本文檔,編寫如下代碼,保存爲.bat文件。

E:
"E:\PHP\wamp\bin\php\php5.5.12\php.exe" -f "E:\PHP\wamp\www\write.php"

PHP運行模式

平時執行php代碼,是通過瀏覽器向服務器請求的方式執行的,這種運行模式叫模塊模式。 模塊模式是以mod_php5模塊的形式集成,此時mod_php5模塊的作用是接收Apache傳遞過來的PHP文件請求,並處理這些請求,然後將處理後的結果返回給Apache。如果我們在Apache啓動前在其配置文件中配置好了PHP模塊(mod_php5), PHP模塊通過註冊apache2的ap_hook_post_config掛鉤,在Apache啓動的時候啓動此模塊以接受PHP文件的請求。

而我們用php.exe執行時, 便是 CLI模式,這篇博文對PHP四種運行模式進行了詳細闡述。

php.exe

PHP命令行執行程序php.exe的功能非常強大,在windows環境下配置系統變量path的值可以直接在dos窗口界面直接運行php腳本文件,這篇文章有具體配置方法。

這裏的php.exe是php安裝目錄下三個和php相關的exe文件中的一個,php-cgi.exe、php-win.exe

php-cgi.exe提供來作爲CGI使用的,通常用來在windows環境下通過cgi方式解析php腳本,常用於在iis下運行php網站,區別是在文件輸出所有內容之前,會自動輸出一個下面的HTTP頭

X-Powered-By: PHP/5.2.5
Content-type: text/html

php-win.exe也可以執行PHP文件,區別是大打開控制檯,不顯示輸出內容。可以用來編寫無需顯示界面的文件處理、網路服務等程序。

PHP執行代碼

<?php
$fp = @fopen("E:/PHP/wamp/www/test.txt", "a+");
fwrite($fp, "自動播報時間:\n" . date("Y-m-d H:i:s"));
fclose($fp);

這裏的文件路徑一定要是絕對路徑,因爲沒有經過apache或iis這種服務器,除了一些基於服務器的變量不能使用的,如$_SERVER等,還有很有可能發生各種無法預計的錯誤。

創建任務計劃

這個百度一下就能出很多,我測試的用的是windows7. 
開始–》附件–》系統工具–》任務計劃程序 
雙擊創建任務 
這裏寫圖片描述
創建名稱和設置執行權限 
這裏寫圖片描述 
設置好開始時間和重複任務間隔時間 
這裏寫圖片描述
選擇寫好的腳本路徑 
這裏寫圖片描述 
到這兒就已經創建好任務計劃程序了 
下面是執行的效果 
這裏寫圖片描述

發佈了31 篇原創文章 · 獲贊 23 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章