linux + thinkphp + crontab实现定时任务

学习目标:

  • 配置thinkphp中自定义指令
  • 配置linux中crontab

学习内容:

例如:

  1. 创建自定义指令
  2. linux配置定时任务

学习产出:

创作环境说明,thinkphp做了合同管理,其中有合同期限,合同到期需要将订单状态给为已完成,这里就需要每天对合同进行一次循环判断合同状态是否变更

thinkphp创建自定义指令

首先,创建一个李自定义命令类文件,根据自身需求变更

php think make:command ChangeStatus chanagestatus

命令会在app/command/生成ChangeStatus.php文件

<?php
declare (strict_types = 1);

namespace 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('changestatus')
            ->setDescription('the changestatus command');
    }

    protected function execute(Input $input, Output $output)
    {
        // 指令输出
        $output->writeln('changestatus start');
        $output->writeln('changestatus end');
    }
}

configure()配置无关紧要,根据自己情况修改或不动都是可以的
execute()就是我们这运行自定义命令时执行的操作

其次,我们打开config/console.php文件配置

<?php
// +----------------------------------------------------------------------
// | 控制台配置
// +----------------------------------------------------------------------
return [
    // 指令定义
    'commands' => [
        'changestatus'=>app\command\ChangeStatus::class, //根据自身情况,变更数据
    ],
];

最后,我们运行php think list就可以看到我们自定义的命令了

> php think list
version 6.1.4

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -V, --version         Display this console version
  -q, --quiet           Do not output any message
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug


Available commands:
  changestatus        the changestatus command			//在这里

>php think changestatus		//执行看一下效果
changestatus start
changestatus end
>

恭喜你,万里长征第一步完成

配置linux定时任务

首先,你要先了解crontab,查看Linux系统是否安装crontabs,安装我们就不过多赘述了。
我们看一下是否正常运行执行systemctl status crond(服务对应的进程名字为crond)。

在这里插入图片描述
其次,我们编写好我们需要用到命令,这里我将其写入了shell脚本中
存储地址根据需要变更,首行必须写#! /bin/bash ,想不明白你就想想php文件怎么写,一个意思用来解释你编写的脚本的。

  • 创建Shell脚本
	[root@iZbp18brdnpqb20dqp8093Z ~]# vim /app/changestatus.sh 
  • 添加命令
#!/bin/bash  	
/opt/remi/php74/root/usr/bin/php  /var/www/thinkphp/think changestatus

  • 赋予脚本执行权限
[root@iZbp18brdnpqb20dqp8093Z ~]# chmod +x changestatus.sh

最后,了解一下crontab的操作命令和时间格式

//操作命令
crontab -l	//查看当前用户的crontab文件内容
crontab -e	//编辑当前用户的crontab文件内容
crontab -r	//删除当前用户的crontab文件内容

//时间格式
 .---------------- minute (0 - 59)
  |  .------------- hour (0 - 23)
  |  |  .---------- day of month (1 - 31)
  |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
  |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  |  |  |  |  |
  *  *  *  *  * user-name  command to be executed

					   
举例
*/5 * * * * command   每5分钟执行一次
0 * * * * 	command   每小时执行一次
0 0 * * *   command   每天执行一次
0 0 * * 0   command   每周执行一次
0 0 1 0 0   command	  每月执行一次
3,15 8-11 * * 1 command 每个星期一的上午8-11点的第3分钟和第15分钟执行
15 8-11 */2 * * command 每隔两天的上午8-11点的第15分钟执行
45 4 1,10,22 * * command 每月1、10、22日的4:45分执行 
0 19 * * 1-5 command   每周一至周五晚上7点执行  

注意:

  1. 整点分钟位置需要填 0
  2. 连续的数字可以用 - 简写1-5;
  3. 非连续的数字可以用 , 连接;
  4. 每隔多长时间用*/n表示;
  • 打开自定义任务列表
[root@iZbp18brdnpqb20dqp8093Z ~]# crcontab -e
  • 写入自定任务 - 每天凌晨2点执行一次
0 2 * * * /bin/bash /app/changestatus.sh  

搞定,下班。

新增FQA:
Q1:
A1:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
windows下使用PHP实现定时执行脚本 一直以来,使用PHP定时运行脚本都是让大家头痛的问题,但是我们确实可以利用windows的计划任务来定时调用PHP脚本,当然这还要感谢PHP.exe。下面,站长将向大家介绍,如何来实现。 目标:根据系统时间定时执行PHP脚本,不需要人工运行(这里以定时新建一个文本文件并写入内容为例) 解决步骤: 1、建立PHP脚本,如下: 大家,可以看见,我们在这里对将要创建的文件路径使用了绝对路径,这是因为我们将要通过windows命令行来调用此脚本,由于cmd.exe与我们的web根目录是不一样的,而php的文件目录函数只能在web根目录范围内进行操作,所以我们需要使用绝对路径,否则代码将正确执行但是文件将不会被创建。 2、新建.bat文件,代码如下: "D:\Program Files (x86)\Web\PHP\php.exe" -f "D:\Program Files (x86)\Web\www\root\go.php" 保存,并命名为run.bat。 注意,如果你的PHP目录或web根目录中含有空格,你需要使用引号将整个路径引用起来,否则将运行错误。站长的目录中含有空格,因此使用了引号。创建属于你自己的bat文件时,请根据自身情况决定是否要使用引号和文件的目录。 3、添加windows计划任务 从控制面板中打开计划任务(这里主要针对win7用户进行说明),点击“创建基本任务”,填写名称和描述,然后点击“下一步”,选择任务执行的频率,很好理解,然后点击“下一步”,设置任务的执行时间,然后点击“下一步”,选择“启动程序”,点击“下一步”,点击浏览按钮选择我们建立的“run.bat”文件,点击”下一步“,点击”完成“。 4、运行 根据你设置的时间,系统会定时自动运行,如果你等不及也可以手动执行。在”计划任务“中间栏下方的任务名中查找你刚才新建的任务,鼠标双击该任务,单击右边的运行按钮,系统会弹出一个cmd对话框然后关闭,这说明你的脚本已经正确执行了,到创建文件的目录去检查文件是否创建。 好了,在windows下使用PHP实现计划任务就介绍到这里了,希望对大家有帮助。 (责任编辑:麦田守望者)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值