#### 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`等,还有很有可能发生各种无法预计的错误。
#### 创建任务计划
![](https://box.kancloud.cn/03e5e727c582aa7ed2226e5086c848c2_465x504.png)
- 目录
- 文档帮助
- 安装
- 书目
- 《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登录密码忘了怎么办呢?
- 搭建一台文件服务器