• 技术文章 >php框架 >ThinkPHP

    详解thinkphp5.1如何实现定时任务

    藏色散人藏色散人2021-06-11 09:01:42转载144
    下面由thinkphp框架教程栏目给大家详解thinkphp5.1如何实现定时任务,希望对需要的朋友有所帮助!

    前言

    我和我的小伙伴们用thinkphp5.1写了一个微课堂的的小系统,要实现一个每天上课提醒和数据初始化的功能,现在方法写好了,不过每次执行都需要在管理员界面手动点一下,感觉好麻烦,如何让他每天定时自动执行呢?
    fa4d904b09a95c74101b19d2d851f76.png

    前人方法

    谷歌上搜tp5.1 定时任务或者计划任务,会有很多博客,但是大多数都是Linux下的脚本,本人刚刚安装上Linux系统,对Linux不太熟悉,先用Windows系统实现。

    思路

    windows环境下与Linux环境下实现思路是一样的。
    1.现将实现方法写到一个触发器里,实现可以点击跳转实现。
    2.写一个脚本,实现自动打开摸个网页。
    3.利用windows自带的定时任务每隔一段时间自动执行这个脚本。

    实现

    1.我们现在login控制器下写一个测试的触发器

    public function test() // 自动执行测试
    {
        echo "这是一个定时任务的测试";
    }

    触发效果如下
    6e5ac0646b002a029fffdbf3d121a6b.png

    2.写一个.bat形式的脚本,实现自动打开本网页。

    再建一个.txt文件,写入执行成功信息。
    0b592fb19efc1c1a24123b285c257e4.png

    代码如下

    @echo off
    
    start iexplore.exe http://127.0.0.1/index/login/test    
    
    Ping -n 5 127.1>nul    
    
    Taskkill /f /im iexplore.exe
    
    echo success >> test.txt

    start iexplore.exe http://127.0.0.1/index/login/test 表示打开浏览器的网址具体网址写在最后,Ping -n 5 127.1>nul 表示等待5秒,Taskkill /f /im iexplore.exe表示关闭浏览器,echo success >> test.txt表示返回成功到记事本,由于写注释在代码中会报错,故在此写一下代码注释。
    点击测试.bat文件
    74bdb7966e8c0210086013b2204df72.png

    记事本效果如下图
    9a084d83b2ca220c43f4f3b29f1dfe6.png

    也可以把写入记事本的代码改成钉钉提醒
    代码如下

    curl -X POST -H "Content-type: application/json" ^
    --data  "{\"text\": {\"content\": \"每日初始完成\"}, \"msgtype\": \"text\"}" ^
    https://oapi.dingtalk.com/robot/send?access_token=23dc64f0dee37b5ee3b1ac472b2c84d837afa15b2a884b87b32f898998408a36

    由于现在增加钉钉机器人功能暂时关闭,在此不再演示。

    3.用windows自带计划任务实现定时自启动脚本

    点开控制面板,点击管理工具->任务计划程序->创建基本任务
    a8e504029de734632556d6c495bc2fd.png

    名称:每日初始
    触发器:每天
    开始: //选择一个你喜欢的时间
    操作:启动程序->选中这个脚本
    完成
    dc027997172d685febbd0c6dad535c7.png

    到设定的时间他就会自动启动。

    结语

    Linux系统具体操作方法不一样,但思路都是一样的,我将我看到的一篇博客连接提供到底下,等我了解Linux系统后,用Linux系统实现。

    相关推荐:最新的10个thinkphp视频教程

    以上就是详解thinkphp5.1如何实现定时任务的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:thinkphp
    上一篇:取消thinkphp操作mysql的30秒时间限制 下一篇:详解ThinkPHP框架如何实现邮箱激活功能
    第16期线上培训班

    相关文章推荐

    • thinkphp行为如何使用• 解决ThinkPHP5.1版本引入composer vendor扩展包的问题• 介绍PHP基于Thinkphp5的砍价活动相关设计• ThinkPHP5访问怎么去除/public/index.php• ThinkPHP3.2.3如何从php5升级到php7

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网