YII console 定时脚本

简介:

可以用来做定时程序通过命令运行代码,非url访问方式更安全

linux/macos 上使用yiic配置(window上使用yiic.bat)

1.yiic要有执行权限,chmod -R 777 yiic

2.yiic用的PHP,需要指定PHP的正确路径:

#!/usr/bin/env php会自动的在你的用户PATH变量中所定义的目录中寻找php来执行的。

用vi打开yiic,把“#!/usr/bin/env php” 改为“#!/usr/local/php/bin/php(也就是你php路径)

也可以>/usr/local/bin/php yiic

 

1.yiic 命令用到的是yiic.php,也可以直接用yiic.php
2.控制台的命令配置文件是应用的protected/config/console.php文件,系统默认的路径是protected/commands/shell 如果你执行单一的任务,直接在run方法里面写,另外一种就是同写你的Controller(控制器),前面增加actionXXX

protected/extensions/clean_command/ECleanCommand.php

Java代码   收藏代码
  1. <?php  
  2. class ECleanCommand extends CConsoleCommand  
  3. {  
  4.     public $webRoot = null;  
  5.     public function getHelp()  
  6.     {  
  7.         $out = "Clean command allows you to clean up various temporary data Yii and an application are generating.\n\n";  
  8.         return $out.parent::getHelp();  
  9.     }  
  10.     public function actionCache()  
  11.     {  
  12.         $cache=Yii::app()->getComponent('cache');  
  13.         if($cache!==null){  
  14.             $cache->flush();  
  15.             echo "Done.\n";  
  16.         }  
  17.         else {  
  18.             echo "Please configure cache component.\n";  
  19.         }  
  20.     }  
  21.     public function actionAssets()  
  22.     {  
  23.         if(empty($this->webRoot))  
  24.         {  
  25.             echo "Please specify a path to webRoot in command properties.\n";  
  26.             Yii::app()->end();  
  27.         }  
  28.         $this->cleanDir($this->webRoot.'/assets');  
  29.         echo "Done.\n";  
  30.     }  
  31.     public function actionRuntime()  
  32.     {  
  33.         $this->cleanDir(Yii::app()->getRuntimePath());  
  34.         echo "Done.\n";  
  35.     }  
  36.     private function cleanDir($dir)  
  37.     {  
  38.         $di = new DirectoryIterator ($dir);  
  39.         foreach($di as $d)  
  40.         {  
  41.             if(!$d->isDot())  
  42.             {  
  43.                 echo "Removed ".$d->getPathname()."\n";  
  44.                 $this->removeDirRecursive($d->getPathname());  
  45.             }  
  46.         }  
  47.     }  
  48.     private function removeDirRecursive($dir)  
  49.     {  
  50.         $files = glob($dir.'*', GLOB_MARK);  
  51.         foreach ($files as $file)  
  52.         {  
  53.             if (is_dir($file))  
  54.             $this->removeDirRecursive($file);  
  55.             else  
  56.             unlink($file);  
  57.         }  
  58.         if (is_dir($dir))  
  59.         rmdir($dir);  
  60.     }  
  61. }  

 console.php,commandMap配置后不需要指定yiic shell index.php

Java代码   收藏代码
  1. <?php  
  2.   
  3. // This is the configuration for yiic console application.  
  4. // Any writable CConsoleApplication properties can be configured here.  
  5. return array(  
  6.     'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',  
  7.     'name' => 'My Console Application',  
  8.     'import'=>array( //可以使用model等  
  9.         'application.models.*',  
  10.         'application.components.*',  
  11.     ),  
  12.     'components'=>array(   
  13.         'db'=>require(dirname(__FILE__) . '/db.php')  
  14.     ),  
  15.     'commandMap' => array(  
  16.         'clean' => array(  
  17.             'class' => 'ext.clean_command.ECleanCommand',  
  18.             'webRoot' => 'E:\Apache2\htdocs\webapp'//注意修改 class::webRoot  
  19.         ),  
  20.         'rbac' => array(  
  21.             'class' => 'application.commands.shell.RbacCommand',  
  22.         )  
  23.     ),  
  24. );  

命令行运行cd E:\Apache2\htdocs\webapp\protected\ 进入yiic.php的目录

yiic clean

Java代码   收藏代码
  1. Usage: E:\Apache2\htdocs\webapp\protected\yiic.php clean <action>  
  2. Actions:  
  3.     cache  
  4.     assets  
  5.     runtime  

yiic.php clean cache
yiic clean assets

Java代码   收藏代码
  1. E:\Apache2\htdocs\webapp\protected>yiic clean assets  
  2. Removed E:\Apache2\htdocs\webapp/assets\1f5cfc05  
  3. Removed E:\Apache2\htdocs\webapp/assets\836290cc  
  4. Done.  

yiic clean runtime

单一任务

Java代码   收藏代码
  1. <?php  
  2. class TestCommand extends CConsoleCommand  
  3. {  
  4.     public function getHelp()  
  5.     {  
  6.         return '这里显示命令的帮助信息';  
  7.     }  
  8.   
  9.     /** 
  10.      * Execute the action. 
  11.      * @param array command line parameters specific for this command 
  12.      */  
  13.     public function run($args)  
  14.     {  
  15.         if(!isset($args[0]))  
  16.             $this->usageError('请输入参数.');  
  17.         echo('你输入的参数是 :\n');  
  18.         var_dump($args);  
  19.         return 1; #必须返回数字  
  20.     }  
  21. }  

 /www/yii_dev/testwebap/protected/ yiic test p1 p2 p3
你输入的参数是 :\narray(3) {
  [0]=>string(2) "p1"
  [1]=>string(2) "p2"
  [2]=>string(2) "p3"
}

yii  crontab 作业方法

yii consolecommand 控制台命令,实现定时任务。当然,这得结合系统,如XP的计划任务,linux的crontab命令打开你的linux命令窗口,创建自动任务。至于windows系统 ,是计划任务(win系统,可以谷歌如何操作),下面只讲linux系统。

Java代码   收藏代码
  1. crontab -e  
  2. ##然后输入  
  3. 1 * * * *  php /具体地址/protected/yiic.php Test >>/具体地址/protected/commands/test.log  

'CException' with message 'Property "CConsoleApplication.user" is not defined.' 在console程序中不能用CWebUser,shell程序中调用到Yii::app()->user会报错

相关文章
|
关系型数据库 MySQL 数据库
Docker部署Mysql数据库详解
Docker是一种流行的容器化平台,可以简化应用程序的部署和管理。在本博客中,我们将探讨如何使用Docker部署两个广泛使用的数据库:MySQL。我们将提供详细的步骤和相应的命令,以帮助您轻松地在Docker容器中设置和运行这个数据库。
2634 0
|
数据采集 存储 数据处理
数据治理:如何制定数据标准与规范
在当今这个数据驱动的时代,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据来源的多样化,如何有效地管理和利用这些数据成为了企业面临的重大挑战。数据治理作为确保数据质量、安全性、合规性和可访问性的关键过程,其核心在于制定并执行一套科学、合理的数据标准与规范。本文将探讨如何制定数据标准与规范,以推动企业的数据治理实践。
2046 3
|
12月前
|
人工智能
SynCamMaster:快手联合浙大、清华等大学推出的多视角视频生成模型
SynCamMaster是由快手科技联合浙江大学、清华大学等机构推出的全球首个多视角视频生成模型,能够结合6自由度相机姿势,从任意视点生成开放世界视频。该模型通过增强预训练的文本到视频模型,确保不同视点的内容一致性,支持多摄像机视频生成,并在多个应用场景中展现出巨大潜力。
258 4
SynCamMaster:快手联合浙大、清华等大学推出的多视角视频生成模型
|
存储 算法 Java
深入剖析HashMap:理解Hash、底层实现与扩容机制
【9月更文挑战第6天】在Java编程中,`HashMap`是一个常用的数据结构,其高效性和可靠性依赖于深入理解哈希、底层实现及扩容机制。哈希通过散列算法将键映射到数组索引,采用链表或红黑树处理冲突;底层实现结合数组与链表,利用2的幂次方长度加快定位;扩容机制在元素数量超过负载因子与数组长度乘积时触发,通过调整初始容量和负载因子可优化性能。
313 3
|
算法 Linux 网络安全
超详细!linux环境git clone探坑录
超详细!linux环境git clone探坑录
942 0
|
存储 安全 搜索推荐
什么是PDS
简述什么是PDS以及基于PDS搭建的企业网盘的体验感受
|
监控 关系型数据库 MySQL
Centos7.6部署zabbix监控服务以及zabbix基本操作
一、安装zabbix服务端 1.1.安装zabbix的yum源,安装后yum.repos.d目录下回生成一个zabbix.repo文件
615 0
Centos7.6部署zabbix监控服务以及zabbix基本操作
三角函数中的正弦、余弦、正切、余切、正割、余割函数性质及常用公式
三角函数中的正弦、余弦、正切、余切、正割、余割函数性质及常用公式
1985 0
三角函数中的正弦、余弦、正切、余切、正割、余割函数性质及常用公式
|
异构计算 Windows
Substance 3D Painter因TDR问题渲染崩溃
解决因TDR问题导致渲染报错问题
1778 0
Substance 3D Painter因TDR问题渲染崩溃
|
canal 消息中间件 otter
Canal v1.1.4版本搭建HA集群
Canal上一个正式版是于2019-9-2发布的v1.1.4,笔者几个月前把这个版本的Canal推上了生产环境,部署了HA集群。过程中虽然遇到不少的坑,但是在不出问题的前提下,Canal的作用还是非常明显的。上周的一次改造上线之后,去掉了原来对业务系统订单数据通过RabbitMQ实时推送的依赖,下游的统计服务完全通过上游业务主库的binlog事件进行聚合,从而实现了核心业务和实时统计两个不同的模块解耦。这篇文章简单分析一下如何搭建生产环境下可靠的Canal高可用集群。
768 0
Canal v1.1.4版本搭建HA集群