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

  • 原创
  • |
  • 浏览:1627
  • |
  • 更新:
  • |
  • 标签:PHP LINUX 

linux系统的crontab的配置, php的CodeIgniter框架下,如何配置定时任务?php-cli 下如何设置参数?

下面以某公司的生产线数据统计为业务场景,配置一个统计产量数据任务,每个小时执行一次。

工具/原料

  • PHPStorm 10.0
  • linux服务器

方法/步骤

  1. 1

    CI框架下搭建好项目,根据业务逻辑,写好任务。、

    如下图是models层的业务代码,注意我这个代码比CI框架中用户手册中配置比较复杂一点点,models中有很多子文件夹,这也决定了后面的配置,稍微复杂;

    /** * 跑出货量统计任务--汇总数据   * */public function RunSummary(){

       //计时器,初始化时间

    .............代码..........

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

    CI框架下控制器层的配置。/** * 更新 出货量统计 汇总 * 编码:UpdateSummary */public function RunSummary() {   $this->load->model('admin/SetProductionStatistic');   return $this->SetProductionStatistic->RunSummary();}

    CI框架下php-cli如何配置定时执行任务
  3. 2
    此文章未经许可获取自百度经验
  4. 3

    在linux终端,x-shell,连接服务器,执行

    /usr/local/php/bin/php  /data/web/online/index.php admin/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)

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

    配置定时任务

    设备产量统计,对时效性有一定的要求,我们这里决定每1小时统计一次,然后将结果缓存到redis中给程序调用。 

    linux下配置定时任务用crontab工具,输入man crontab可以看详细介绍;按q退出;这里给出配置命令

    基本格式

    *  *  *  *  *  command

    分 时 日 月 周 命令

    每1小时启动一下程序命令如下 

    * */1 * * * /usr/local/php/bin/php  /data/web/online/index.php admin/Admin/RunSummary  

    */1即表示每小时调用一下后面的命令

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

    正式开始配置,进入到crontab编辑界面,操作与vi编辑器一样

    [root@test-web01 ~]# crontab -e

    主要用4个键hjkl

    h = 左移

    J = 向下移

    K = 向上移

    L = 向右移

    按I 键进入编辑模式,可以输入和修改

    按ESC退出编辑模式; 

    按 : q ;即退出

    按 :wq 即保存退出

    按 : q!   即强制退出

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

    日志输出

    定时任务一般需要会打日志的,方便你事后查询是否执行以及执行结果;php和python,shell脚本,都可以有打日志功能;

    如下图,大部分执行60秒左右;

    ERROR - 2016-12-08 04:01:38 --> HFDATAAPP->excute cost time = 97 (s)

    CI框架下php-cli如何配置定时执行任务
    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签PHPLINUX