第一步:在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路径 第二个路径即为设置定时任务文件的路径