
linux系统的crontab的配置,php的CodeIgniter框架下,如何配置定时任务?php-cli 下如何设置参数?
下面以某公司的生产线数据统计为业务场景,配置一个统计产量数据任务,每个小时执行一次。
CI框架下搭建好项目,根据业务逻辑,写好任务。、
如下图是models层的业务代码,注意我这个代码比CI框架中用户手册中配置比较复杂一点点,models中有很多子文件夹,这也决定了后面的配置,稍微复杂;
/** * 跑出货量统计任务--汇总数据 * */public function RunSummary(){
//计时器,初始化时间
.............代码..........
CI框架下控制器层的配置。/** * 更新 出货量统计 汇总 * 编码:UpdateSummary */public function RunSummary() { $this->load->model('admin/SetProductionStatistic'); return $this->SetProductionStatistic->RunSummary();}
在linux终端,x-shell,连接服务器,执行
/usr/local/php/bin/php/data/web/online/index.phpadmin/Admin/RunSummary
注意参数配置
php执行路径 框架文件下面index.php 控制器
注意后面参数的写法,每个框架都不一样,admin是我controllers下面的子目录,Admin是控制器的名字,RunSummary是执行统计设备的函数;
如果控制器controllers下,没有子目录,那就直接写 "控制器/函数"
/usr/local/php/bin/php/data/web/online/index.php Admin/RunSummary
查看结果是否正确,执行耗时1秒种如图:
HFDATAAPP->excute = 1(s)
配置定时任务
设备产量统计,对时效性有一定的要求,我们这里决定每1小时统计一次,然后将结果缓存到redis中给程序调用。
linux下配置定时任务用crontab工具,输入man crontab可以看详细介绍;按q退出;这里给出配置命令
基本格式
* * * * * command
分 时 日 月 周 命令
每1小时启动一下程序命令如下
* */1 * * * /usr/local/php/bin/php/data/web/online/index.phpadmin/Admin/RunSummary
*/1即表示每小时调用一下后面的命令
正式开始配置,进入到crontab编辑界面,操作与vi编辑器一样
[root@test-web01 ~]# crontab -e
主要用4个键hjkl
h = 左移
J = 向下移
K = 向上移
L = 向右移
按I 键进入编辑模式,可以输入和修改
按ESC退出编辑模式;
按 : q ;即退出
按 :wq即保存退出
按 : q! 即强制退出
日志输出
定时任务一般需要会打日志的,方便你事后查询是否执行以及执行结果;php和python,shell脚本,都可以有打日志功能;
如下图,大部分执行60秒左右;
ERROR - 2016-12-08 04:01:38 --> HFDATAAPP->excute cost time = 97 (s)
