:

使用 Yii2 的 Cli 模式添加定时任务

song100e 发布于:2018-3-31 16:41 分类:Yii2  有 465 人浏览,获得评论 0 条 标签: crontab 

最近接到一项任务,定时获取主机列表并同步到系统中,于是考虑使用crontab定时执行php脚本,顺便也把 crontab 复习一下。

根据官方手册,cli的入口脚本在根目录下


#!/usr/bin/env php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(dirname(__DIR__) . '/yiiFramework/vendor/autoload.php');
require(dirname(__DIR__) . '/yiiFramework/vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/config/console.php');// 注意修改 db 配置

$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);


在 commands 目录下参考 HelloController.php 创建 HostController.php
在 index 的 action 里写代码,因为要同步保存到数据库中,所以修改config/console.php文件中的 $db 配置
代码省略,逻辑大概是根据接口返回数据进行循环, 判断如果主机信息已存在当前系统中则忽略,否则就入库,
使用 try{ ... }catch(\Exception $e){ \Yii::info($e->getMessage()); // 记录错误信息}


然后再服务器上添加定时任务,使用 crontab -e 进行编辑
*/10 * * * * pathto/yii host/index 保存即可
意思是每10分钟执行一次脚本,注意*在前,笔者就记错了

赞助我,共同学习进步!