Tp以及LV的任务调度

本文探讨了Laravel和Thinkphp框架中的任务调度实现。在Laravel中,介绍了增加任务调度文件和调度常用选项。而在Thinkphp中,详细步骤包括在command.php文件中添加定时任务代码,并通过cmd命令行进行测试执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Laravel任务调度

* * * * * 位置/php 位置/artisan schedule:run >> /dev/null 2>&1  唯一增加的计划任务

增加任务调度文件

php artisan make:console 类名 --command=xzj:test
xzj:test 这个是控制台执行的命令-----相当于标识
description  这个是存储命令描述
handle 方法里面是存储的运行操作---可以调用模型乱七八糟的,反正就是想怎么写怎么写

 

调度常用选项

当然,你可以分配多种调度到任务:
方法
描述
->cron('* * * * *');
在自定义Cron调度上运行任务
->everyMinute();
每分钟运行一次任务
->everyFiveMinutes();
每五分钟运行一次任务
->everyTenMinutes();
每十分钟运行一次任务
->everyFifteenMinutes();
每十五分钟运行一次任务
->everyThirtyMinutes();
每三十分钟运行一次任务
->hourly();
每小时运行一次任务
->hourlyAt(17);
每小时第十七分钟运行一次任务
->daily();
每天凌晨零点运行任务
->dailyAt('13:00');
每天13:00运行任务
->twiceDaily(1, 13);
每天1:00 & 13:00运行任务
->weekly();
每周运行一次任务
->monthly();
每月运行一次任务
->monthlyOn(4, '15:00');
每月4号15:00运行一次任务
->quarterly();
每个季度运行一次
->yearly();
每年运行一次
->timezone('America/New_York');
设置时区
在运行命令前需要将其注册到 App\Console\Kernel $commands 属性中:
schedule方法中编写任务调度
 //方法一:
 // $schedule->call(function (){
 // Log::info('任务调度一:闭包形式');
 // })->everyMinute();
 //方法二37 $schedule->command('xzj:test')->everyMinute();
一次性测试
在控制台上执行Artisan命令:
php artisan xzj:test

 

 
例如:你想执行单独的xzj:test命令
* * * * * 路径/php /路径/artisan xzj:test >> /dev/null 2>&1

 

 

Thinkphp程序调度

第一步:在application/api里创建command目录里面新建UpOrder.php
内容如下:
<?php
/**
* Created by PhpStorm.
* User: apple
* Date: 2018/9/7
* Time: 下午7:30
*/

namespace app\api\command;

use think\facade\Log;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use app\api\model\Order;
use app\api\model\Task;
class UpOrder extends Command
{
    protected function configure(){
        $this->setName('UpOrder')->setDescription("更新订单");
    }

    protected function execute(Input $input, Output $output){
        $time = time() - 3600;
        $order = Order::where('status',0)->field('id,status,get_at,task_id,stage')->select();
        foreach ($order as $k => $v)
        {
          if($v['get_at'] < $time )
          {
            $v->status = 3;
            $v->finish_at = time();
            if($v['stage'] === 0){
                $task = Task::get($v['task_id']);
                $task->left_number = $task['left_number'] + 1;
                $task->get_number = $task['get_number'] - 1;
                if($task->save()){
                    Log::write('任务'.$task['id'].'数量更新成功','info');
                }
          }
          if($v->save()){
            Log::write('订单'.$v['id'].'超时','info');
          }
        }
     }
  }

}

此处execute方法里内容为设定的定时任务。

第二步:在application里command.php文件里加上如下内容:

return [
'app\api\command\UpOrder'
];

第三步:通过cmd命令窗口进入项目根路径里:

执行crontab -e命令进入编辑状态:加上* * * * *  /usr/bin/php /Users/php/wall/think UpOrder

测试

php think 文件名

 

##小菜鸡一枚,如有什么地方错误的,欢迎前来指教,虚心学习~
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值