Thinkphp3.2定时执行任务

之前开发的拼团的时候,有用到过定时任务,但是因为定时不是我负责的,所以也只是粗略的看了下。

现在工作又遇到需要些定时任务的,所以自己顺带的也整理了一份定时任务的笔记,有什么问题请留言告诉我。谢谢

添加入口文件cli.php

在ThinkPHP的同级目录index.php下新建一个cli.php

<?php
/**
 * Created by PhpStorm.
 * User: loveteemo
 * Date: 2017/9/22
 * Time: 16:42
 */

// 应用入口文件

// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);

//绑定模块 省略HOME
define('BIND_MODULE','Home');

// 定义应用目录
define('APP_PATH',dirname(__FILE__).'/Application/');

define('APP_MODE','cli');

// 引入ThinkPHP入口文件
require dirname(__FILE__).'/ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单

其中需要注意几点

1、定义的应用目录和框架目录需要用绝对地址

2、定义访问MODE为cli模式

添加配置文件cli.php

在ThinkPHP/Mode目录下新增cli.php,内容为复制common.php

然后注释掉日志配置

//'Think\Log'               => CORE_PATH . 'Log'.EXT,

新增Linux下编辑定时任务

crontab -e

新增每分钟执行一次的定时写入数据库日志表测试

* * * * * /bin/sh /var/www/html/项目名/cli.sh

写入完成后,重启 crond 服务,给与该 cli.sh 的可执行权限

#!/bin/sh
/usr/bin/php56 /var/www/html/项目名/cli.php /Help/test;

查看数据库中是否每分钟增加一行数据

    public function test()
    {
        $sapi_type = php_sapi_name();

        if($sapi_type === 'cli'){
            echo "CLI模式访问";
        }else{
            echo "非CLI模式访问";
        }
        //定时任务已完成
        M("log")->add(array("msg"=>"定时执行任务".date('Y-m-d H:i:s')));
    }

因为我绑定是Home模块,所以这里执行的时候没有写模块名,cli.php [模块/控制器/函数] 访问该地址

假如遇到不执行,请按顺序排查sh代码,入口文件,定时服务,PHP代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值