方法一

1.在/application/command创建要配置的PHP类文件,需要继承Command类,并重写configure和execute两个方法,例如:

<?phpnamespace app\command;use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;class Hello extends Command
{protected function configure(){$this->setName('hello')    //命令的名字("think" 后面的部分)->addArgument('name', Argument::REQUIRED, "your name")    //必填参数->addArgument('last_name', Argument::OPTIONAL, 'Your last name?')    //选填参数->addOption('city', 'c', Option::VALUE_OPTIONAL, 'city name')    ->setDescription('Say Hello');    // 运行 "php think list" 时的简短描述->setHelp("This command allows you to create users...");    // 运行命令时使用 "--help" 选项时的完整命令描述}protected function execute(Input $input, Output $output){$name = trim($input->getArgument('name'));$name = $name ?: 'thinkphp';$other = trim($input->getArgument('last_name'));$other = $other ?: 'last';if ($input->hasOption('city')) {$city = PHP_EOL . 'From ' . $input->getOption('city');} else {$city = '';}$output->writeln("Hello," . $name .'last_name->'.$other. '!' . $city);}
}

直接进入网站根目录,命令行执行,就可看到效果

php think hello fujian min  --city xiamen

2.修改application/command.php内容,加入上述的定时器内容

<?php
return ['application\command\Hello', // 加入需要cmd运行的PHP文件
];

3.添加shell执行文件

在项目根目录下创建shell脚本,例如crond.sh

#!/bin/sh
PATH=/usr/local/php/bin:/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 将php路径加入都临时变量中
# 如果你的PHP命令是已经配置了全局,可不需要上面这句
cd /home/wwwroot/域名/  # 进入项目的根目录下,保证可以运行php think的命令
php think hello xx # 执行在Hello.php设定的名称

注意:test 可执行命令是ThinkPHP自带的,可以通过 连接服务器,到/home/wwwroot/域名/ 目录下,输入 php think查询可以被执行的命令,如下:

4.使用crontab设置定时器

有两种方式,效果是一样的:

1.连接到服务器,输入 crontab -e,写入:

0 0 * * * /home/wwwroot/域名/crond.sh

注意:1).0 0 * * * 是crontab的定时表达式,表示每天的0点0分执行该文件,具体详情可以访问《crontab定时写法》进行学习。

2).可以使用crontab -l 的命令查看已登录的账户有几个定时器。

3).可以到 /var/log/cron 文件查看日志文件,便于追踪错误。

2.连接到服务器,输入 vim /etc/crontab, 初始化内容为:

在该文件写入

0 0 * * * root /home/wwwroot/域名/crond.sh

最终的查看的结果是:

最后保存该文件

5.重启crond服务

service crond restart

如果 该命令无法重启,请使用systemctl restart crond 进行重启

----------------------------------------------------------分隔线--------------------------------------------------------------

方法二,需要修改本文的前三步,后面均一致。

1).新增Controller类,并编写相对应的方法,例如:

以下是Test Controller类,还有一个简单的test方法。

<?phpnamespace app\demo\controller;use think\Controller;
use think\Log;class Test extends Controller
{public function test(){Log::error('start test  crond demo.....');Log::error('end test  crond demo.....');}}

访问test方法的路由:demo/test/test

2).添加shell执行文件

在项目根目录下创建shell脚本,例如crond.sh

#!/bin/sh
PATH=/usr/local/php/bin:/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 若配置全局PHP命令,可不需要上面这句
# 1.执行 php 命令不需要到thinkphp项目的目录下 2.index.php为入口文件 3.第三个参数为需要执行方法的路由
php /home/wwwroot/域名/index.php demo/test/test

后面的步骤从本文第4步开始,就可以完成定时功能。

第二种方法符合API引用的思维,可能比较容易理解,第一种是利用thinkPHP本身的一个功能,这两种都可以,看个人习惯。

ThinkPHP5实现定时器任务相关推荐

  1. php定时爬虫,thinkphp5使用workerman定时器定时爬取站点内容的代码

    本篇文章给大家分享的内容是关于thinkphp5使用workerman定时器定时爬取某站点新闻资讯等的内容,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. 1.首先通过 composer ...

  2. ThinkPHP5中使用workman框架与硬件设备蓝牙锁通讯

    通篇分为三大块:服务器.蓝牙锁.APP 先说服务器: 使用的是TP5.workman框架使用composer安装的 安装wm可直接参考TP5的官方手册,讲解的很细致https://www.kanclo ...

  3. 一文吃透JAVA定时器格式

    JAVA 定时器时间格式 ​ 基本格式: [秒]  [分]  [小时]  [日]  [月]  [周]   [年] 序号 说明 是否必填 允许填写的值 允许使用的通配符 1 秒 是 0-59 ,   - ...

  4. Timer定时器开发

    Timer定时器开发 定时器的作用是不占线程的等待一个确定时间,同样通过callback来通知定时器到期. 参考:https://github.com/sogou/workflow 定时器的创建 同样 ...

  5. thinkphp5.1 中间件是什么有什么用

    中间件是什么?有什么作用? 中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理.---tp5.1手册 也就是说,降低了系统的耦合:[在http请求阶段,执行中间件的入口执行方法(hand ...

  6. linux定时器(crontab)实例

    linux实验示例----实现每2分钟将"/etc"下面的文件打包存储到"/usr/lobal"目录下 ·Step1:编辑当前用户的crontab并保存 终端输 ...

  7. c语言程序设计分段定时器,单片机C语言编程定时器的几种表达方式

    原标题:单片机C语言编程定时器的几种表达方式 吴鉴鹰单片机开发板地址 店铺:[吴鉴鹰的小铺] 地址:[https://item.taobao.com/item.htm?_u=ukgdp5a7629&a ...

  8. thinkphp5+远程代码执行_ThinkPHP5 5.0.23 远程代码执行漏洞

     漏洞描述 ThinkPHP是一款运用极广的PHP开发框架.其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程 ...

  9. linux 内核按键抖动,Tiny4412 Linux驱动之按键(定时器防抖动) | 技术部落

    按键抖动示意图 我们平常所用的按键为机械弹性开关,由于触点的弹性作用,按键在闭合时不会马上稳定的接通,而是有一段时间的抖动,在断开时也不会立即断开.抖动时间由按键的机械特性所决定,一般为5ms~10m ...

最新文章

  1. IOS设计模式第六篇之适配器设计模式
  2. (27)TLB番外篇——ShadowWalker
  3. [概述] SAP增强基本含义及分类
  4. 空格替换_O(n)方法
  5. 安装spark1.3.1单机环境
  6. adodb.stream对象的方法/属性
  7. python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式
  8. 下面是html5中新增的结构元素的是,HTML5的新的结构元素介绍
  9. asp exce l连接字符串_C++基础知识篇:C++ 字符串
  10. JavaSE----常用类(String、StringBuilder、StringBuffer)
  11. java哪个软件编程好学吗_自学编程:Java和C语言相比哪个好?哪个更值得学习?...
  12. [leetcode]208. 实现 Trie (前缀树)
  13. IJCAI最佳论文公布 华人斩获最佳学生论文奖!
  14. 【数学基础】机器学习中的几个熵
  15. 创新者的窘境 Teh Innovator‘s Dilemma
  16. 宠物管理系统mysql_基于java+MySQL的宠物管理系统
  17. .NET面试宝典130道经典面试真题及答案
  18. python中θ符号怎么打出来_Python打印特殊符号及对应编码解析
  19. icloud 照片同步_如何确保Mac和iPhone的照片同步到iCloud
  20. Docker安装ElasticSearch 版本7.6.2

热门文章

  1. 计算机网络---万维网(WWW)
  2. AI人工智能和ML语言的技术概述与未来趋势
  3. TZC 1283: 简单排序 —— 希尔排序
  4. Fireworks MX 2004 入门教程-滤镜及实例(转)
  5. 浅谈C#可变参数params
  6. U盘中毒后,怎么恢复被隐藏的文件
  7. 睿乐购电商课程设计——总结
  8. 计算机教师的名言是,教师的人生格言
  9. android 没有 art模式吗,底层:Android终于默认了提升效率的ART模式
  10. 手把手带你学会Odoo OWL组件开发(5):浅析OWL原理