PHP定时任务实现(计划任务 vs node.js)
PHP自动任务(单线程)
一、计划任务实现 :最终需要在服务器(windows)上 设置计划任务
1、写好php任务文件 auto.php:链接数据库 判断条件操作数据库
2、创建bat文件 例:run.bat
文件中写入 "D:\phpStudy\WWW\kawadai\nodejs\php\php.exe" -f "D:\phpStudy\WWW\kawadai\auto.php"
前者是php.exe 路径 后者是php任务文件路径
3、创建计划任务
-
首先我们打开开始菜单,然后在搜索框中输入计划任务这几个字
-
-
-
二、node.js实现
1、 安装node.js 及相关配置环境
下载地址 : http://nodejs.cn/
npm安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西
利用npm.cmd安装 所需模块 例: mqsql node-schedule jquery express
将安装好的环境包以及模块 一起复制 入php 项目根目录中
2、写好php任务文件 auto.php:链接数据库 判断条件操作数据库,该文件可放入 上述nodejs 文件夹
3、创建js文件 auto.js :该文件也可放于上述nodejs文件夹
node.js创建定时任务 执行cmd命令 cmd其实是执行php文件 : php.exe路径 php文件路径
定时时间设置
1. 确定的时间执行
- var date = new Date(2016,6,13,15,50,0);
- schedule.scheduleJob(date, function(){
- httpGet();
- });
- var rule1 = new schedule.RecurrenceRule();
- var times1 = [1,6,11,16,21,26,31,36,41,46,51,56];
- rule1.second = times1;
- schedule.scheduleJob(rule1, function(){
- httpGet();
- });
3.以分为单位执行
- var rule2 = new schedule.RecurrenceRule();
- var times2 = [1,6,11,16,21,26,31,36,41,46,51,56];
- rule2.minute = times2;
- schedule.scheduleJob(rule2, function(){
- httpGet();
- });
有500请忽略,不小心把数据库关掉了.
4.以小时为单位执行
- var rule3 = new schedule.RecurrenceRule();
- var times3 = [1,5,9,13,17,21];
- rule3.hour = times3;
- schedule.scheduleJob(rule3, function(){
- httpGet();
- });
以小时的就不贴运行结果了.时间太久
5.Cron风格
- schedule.scheduleJob('5 * * * * *', function(){
- httpGet();
- });
图中注释定时器部分 是每秒执行 未注释部分是 每五秒执行
4、创建bat文件 同样放于nodejs文件夹 内容:
手动点击即可执行 auto.js 进而定时执行 auto.php文件 完成自动定时任务