windows2012运行php,Windows任务计划定时执行PHP

本文介绍了如何在Windows Server 2012上利用任务计划程序定时执行PHP脚本,通过批处理文件和php.exe命令行,避免占用正常资源,重点讲解了模块模式和CLI模式的区别,以及如何创建任务计划来实现定时任务的自动计算和数据库操作。
摘要由CSDN通过智能技术生成

#### 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执行代码

~~~

$fp = @fopen("E:/PHP/wamp/www/test.txt", "a+");

fwrite($fp, "自动播报时间:\n" . date("Y-m-d H:i:s"));

fclose($fp);

~~~

或者

~~~

$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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值