windows下的定时任务设置详解
一、总结
一句话总结:
1、php.exe是什么?
就是php中自带的一个exe,不是我们写的,这个exe是可以执行其他的PHP的
二、windows下的定时任务设置详解
因为在项目中有个需求是大批量的数据自动计算后插入更新到数据库中,为避免占用正常资源,需要在固定时间段进行自动计算,因为项目服务器是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等,还有很有可能发生各种无法预计的错误。
(注:这里php页面中出现的相对路径发现不能用,脚本做好不牵涉到其他的路径)
创建任务计划
这个百度一下就能出很多,我测试的用的是windows7.
开始–》附件–》系统工具–》任务计划程序
双击创建任务
创建名称和设置执行权限
设置好开始时间和重复任务间隔时间
选择写好的脚本路径
到这儿就已经创建好任务计划程序了
下面是执行的效果