#### Windows任務計劃定時執行PHP代碼及擴展
因為在項目中有個需求是大批量的數據自動計算后插入更新到數據庫中,為避免占用正常資源,需要在固定時間段進行自動計算,因為項目服務器是windows server2012,就考慮用windows平臺強大的任務計劃程序來實現.
下面是一個測試用的例子。
#### windows批處理文件
新建文本文檔,編寫如下代碼,保存為.bat文件。
~~~
"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.exe
PHP命令行執行程序php.exe的功能非常強大,在windows環境下配置添加 php.exe 的文件路徑,加入到系統變量 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);
~~~
或者
~~~
<?php
$fp = @fopen("test.txt", "a+");
fwrite($fp, date("Y-m-d H:i:s") . " 讓PHP定時運行吧!/n");
fclose($fp);
?>
~~~
這里的文件路徑一定要是絕對路徑,因為這里沒有經過 `apache` 或 `IIS` 等的服務器,除了一些基于服務器的變量不能使用的,如`$_SERVER`等,還有很有可能發生各種無法預計的錯誤。
#### 創建任務計劃

- 目錄
- 文檔幫助
- 安裝
- 書目
- 《Windows Server 2012 網絡管理與架站》
- 《Windows Server 2012 R2網絡管理與架站》
- 《Windows Server 2012 系統配置指南》
- 《Windows Server 2012 R2系統配置指南》
- ECS
- ECS配置
- IIS 服務
- 配置站點
- 重啟 IIS 服務
- FTP
- 域名備案
- Windows Server 2012 升級
- 計劃任務
- Windows任務計劃定時執行PHP
- MIME 配置
- json
- .appcache
- 系統安全
- 安騎士
- 問題
- Web 服務器 (IIS)
- 概述
- 安裝配置證書
- 計劃任務
- 限制IP地址
- HTTP 重定向
- 錯誤頁
- 網站維護
- 證書遷移
- 導入導出證書
- 導入并配置SSL 證書副本
- Process Utilities
- PsExec
- Telnet
- 安裝Telnet
- 使用telnet檢測遠程主機端口是否開啟
- netstat
- -ano
- -at
- -au
- 視頻
- 設置共享文件夾
- 遠程桌面連接
- 設置多用戶同時登錄遠程桌面
- 如何設置Windows 實例遠程連接安全組
- ECS阿里云
- 版本
- windows server 2012 R2登錄密碼忘了怎么辦呢?
- 搭建一臺文件服務器