使用 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分钟执行一次脚本,注意*在前,笔者就记错了
赞助我,共同学习进步!

