codecamp

定时任务

1 概述

在Cobub Razor中,必须在服务器上设置一个定时任务,这样数据可以自动从工厂数据库转到数据仓库进行处理。所有的移动应用统计分析报表数据来自于数据仓库。为了自动触发Cobub Razor任务,用户可以设置一个脚本执行任务计划。

下面的说明描述了如何在 Linux/Unix系统,Windows系统下做任务计划。这里提供了五个脚本来做报告的定时任务:

  1. 每小时运行一次 – 做工厂数据库到数据仓库的数据抽取与处理,生成前一小时的统计分析报表。
  2. 每天运行一次 – 生成每天统计分析报表,必须安排在第二天。
  3. 每周运行一次 – 生成每周统计分析报表,必须安排在周日。
  4. 每月运行一次 – 生成每月统计分析报表,必须安排在每月的第一天。
  5. 迟来数据的运行 – 运行从客户端迟来的数据统计(由于时区或客户端发生策略的设置原因而导致的某些数据没有实时地上传到服务器)

定时任务重要提示:

  1. 每小时数据存档 – 每小时任务可以安排在每小时10分钟的时候。
  2. 每天数据存档 – 每天任务必须一天执行一次。
  3. 每周数据存档 – 每周任务必须安排在周日,可以将每周任务安排在每周日的00:30。
  4. 每月数据存档 – 每月任务必须安排在每个月的第一天,比如02:30。
  5. 迟来数据存档 – 迟来数据处理必须安排在每一天,比如01:30。

2 Linux/Unix的定时任务

在Unix类操作系统中定时任务是基于时间的计划。定时任务 帮助用户在某个特定的时间或日期定期地计划任务(命令或shell脚本)。

2.1 准备脚本文件

首先,在 /var/www/cron目录下创建五个sh脚本文件,命名为:

razor_hourly_archive.sh

razor_weekly_archive.sh

razor_monthly_archive.sh

razor_laterdata_archive.sh

razor_daily_archive.sh

请确保.sh文件有可执行权限,如没有,可执行下面的命令赋于文件可执行权限:

sudo chown +x *.sh

下面是样例脚本文件。

例如,/user/share/nginx/razor是Cobub Razor在服务器上的目录。

文件Razor_hourly_archive.sh:

#!/bin/bash

php /usr/share/nginx/razor/index.php archive archiveHourly

文件razor_weekly_archive.sh:

#!/bin/bash

php /usr/share/nginx/razor/index.php archive archiveWeekly 文件razor_monthly_archive.sh:

#!/bin/bash

php /usr/share/nginx/razor/index.php archive archiveMonthly

文件razor_laterdata_archive.sh:

#!/bin/bash

php /usr/share/nginx/razor/index.php archive archiveLaterData

文件razor_daily_archive.sh:

#!/bin/bash

php /usr/share/nginx/razor/index.php archive archiveUsingLog

2.2 配置crontab

Crontab 需要安装php-cli 或php-cgi,用户可以使用SSH 或Puty连接到服务器进行设置。

crontab -e 然后,增加以下代码行:

# 表示每个小时的第五分钟执行一次脚本
5 * * * * /var/www/cron/razor_hourly_archive.sh

# 表示每天的1:00执行一次脚本
0 1 * * * /var/www/cron/razor_daily_archive.sh

# 表示每个星期天0:30执行一次脚本
30 0 * * 0 /var/www/cron/razor_weekly_archive.sh

# 表示每个月第一天0:30执行一次脚本
30 0 1 * * /var/www/cron/razor_monthly_archive.sh

# 表示每天1:30执行一次脚本
30 1 * * * /var/www/cron/razor_laterdata_archive.sh
重启定时任务:

/etc/init.d/cron restart

3 Windows的定时任务

3.1 创建定时任务

要打开Windows (XP, 7, 2003/2008 服务器)上的任务计划,单击所有程序,附件,系统工具,然后点击任务计划程序。

点击‘操作’,‘创建基本任务’并为任务命名,例如,”Razor Hourly Archive”。计划任务如下所示。 

创建基本任务样例:

 情况一:如果php.exe还没添加到环境变量下,请填写其所在的详细路径。

添加定时任务流程步骤如下图所示:

图1

图2

图3

图4

图5

图6

图7

图8

情况二:如果php.exe已经添加到系统环境变量的PATH下,则第一个参数只需写成php;

添加定时任务流程步骤如下图所示:

图1


图2


图3

图4

图5


图6



3.2 定时任务配置

如果php.exe还没添加到环境变量下,请填写其所在的详细路径,如 D:\xampp\php\php.exe。如果php.exe已经添加到系统环境变量的PATH下,则第一个参数只需写成php。

1. 每小时数据存档

php D:\xampp\htdocs\razor\web\index.php archive archiveHourly

“D:\xampp\htdocs\razor\web\index.php”是Cobub Razor在服务器上的目录,archive和archiveHourly是定时任务执行时需要的参数。

2. 每周数据存档

php D:\xampp\htdocs\razor\web\index.php archive archiveWeekly

3. 每月数据存档

php D:\xampp\htdocs\razor\web\index.php archive archiveMonthly

4. 迟来数据存档

php D:\xampp\htdocs\razor\web\index.php archive archiveLaterData

5. 每天数据存档

php D:\xampp\htdocs\razor\web\index.php archive archiveUsingLog

4 Web 定时任务

如果可 以在服务器上做定时任务,我们极力推荐用户运行定时任务或任务计划。但是,在某些共享主机或特殊配置的服务器上,不允许运行定时任务 或任务计划。

某些web主机允许设置web 定时任务,主机会在预定时间自动访问这个简单的URL。如果想使用web 定时任务,可以在主机界面输入一下URL 。

http://server_url/index.php?/archive/archiveHourly

http://server_url/index.php?/archive/archiveWeekly

http://server_url/index.php?/archive/archiveMonthly

http://server_url/index.php?/archive/archiveLaterData

http://server_url/index.php?/archive/archiveUsingLog

5 下一步 – 配置

如果想使用Cobub Razor更多功能,请参见配置

常见问题
下载Cobub Razor
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }