CI框架下php-cli如何配置定时执行任务

CI框架下php-cli如何配置定时执行任务

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)