zoukankan      html  css  js  c++  java
  • PHP定时任务实现(计划任务 vs node.js)

    PHP自动任务(单线程)

    一、计划任务实现 :最终需要在服务器(windows)上 设置计划任务

    1、写好php任务文件 auto.php:链接数据库 判断条件操作数据库

    2、创建bat文件 例:run.bat

    文件中写入     "D:phpStudyWWWkawadai odejsphpphp.exe"  -f  "D:phpStudyWWWkawadaiauto.php"

    前者是php.exe 路径 后者是php任务文件路径

    3、创建计划任务

    1. 首先我们打开开始菜单,然后在搜索框中输入计划任务这几个字

    2.  回车确定之后,就会弹出计划任务的设置面板,
       
    3.  我们点击创建基本任务选项,,
       
    4.  然后输入任务名和描述,并点击下一步按钮,
       
    5.  选择任务提醒频率为每天,然后点击下一步
    6. 然后设置时间,如图:
     计划任务可再次修改编辑,可自行设置

     二、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. 确定的时间执行

    比如: 2016年7月13日15:50:00 , new Date() 的时候月份要减1.
    [javascript] view plain copy
     
    1. var date = new Date(2016,6,13,15,50,0);  
    2. schedule.scheduleJob(date, function(){  
    3.   httpGet();  
    4. });  
    运行结果:

    2. 秒为单位执行

    比如:每5秒执行一次
    [javascript] view plain copy
     
    1. var rule1     = new schedule.RecurrenceRule();  
    2. var times1    = [1,6,11,16,21,26,31,36,41,46,51,56];  
    3. rule1.second  = times1;  
    4. schedule.scheduleJob(rule1, function(){  
    5.   httpGet();  
    6. });  
    运行结果:


    3.以分为单位执行

    比如:每5分种执行一次
    [javascript] view plain copy
     
    1. var rule2     = new schedule.RecurrenceRule();  
    2. var times2    = [1,6,11,16,21,26,31,36,41,46,51,56];  
    3. rule2.minute  = times2;  
    4. schedule.scheduleJob(rule2, function(){  
    5.   httpGet();  
    6. });  
    运行结果:

    有500尴尬请忽略,不小心把数据库关掉了.

    4.以小时为单位执行

    比如:每4小时执行一次
    [javascript] view plain copy
     
    1. var rule3     = new schedule.RecurrenceRule();  
    2. var times3    = [1,5,9,13,17,21];  
    3. rule3.hour  = times3;  
    4. schedule.scheduleJob(rule3, function(){  
    5.   httpGet();  
    6. });  

    以小时的就不贴运行结果了.时间太久

    5.Cron风格

    [javascript] view plain copy
     
    1. schedule.scheduleJob('5 * * * * *', function(){  
    2.   httpGet();  
    3. });  
    这个代码的意思就是每分钟的5秒这个点执行

    图中注释定时器部分 是每秒执行 未注释部分是 每五秒执行

    4、创建bat文件 同样放于nodejs文件夹  内容:

    手动点击即可执行 auto.js 进而定时执行 auto.php文件 完成自动定时任务

  • 相关阅读:
    js 生成32位UUID方法
    win10把控制声音改成和win7一样
    jQuery.inArray()方法
    在eclipse中安装activiti插件
    关于NOIP运输计划一题几种思路和若干种做法的研究
    该博客停止更新
    [CTSC2010]产品销售
    roi 学习轨迹
    「PA 2019」Szprotki i szczupaki
    LOJ576签到游戏
  • 原文地址:https://www.cnblogs.com/yimingwang/p/7486451.html
Copyright © 2011-2022 走看看