`
hudeyong926
  • 浏览: 2016926 次
  • 来自: 武汉
社区版块
存档分类
最新评论

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文件,

<?php
define('ROOT_PATH' , "/Users/apple/development/pyq_tuiguang/");

$yii    = '/sites/www/yii/framework/yiic.php';
$config = ROOT_PATH . 'protected/config/console.php';

require_once($yii);
Yii::createWebApplication($config)->run();

系统默认的路径是protected/commands/shell 如果你执行单一的任务,直接在run方法里面写,另外一种就是同写你的Controller(控制器),前面增加actionXXX

protected/extensions/clean_command/ECleanCommand.php

<?php
class ECleanCommand extends CConsoleCommand
{
	public $webRoot = null;
	public function getHelp()
	{
		$out = "Clean command allows you to clean up various temporary data Yii and an application are generating.\n\n";
		return $out.parent::getHelp();
	}
	public function actionCache()
	{
		$cache=Yii::app()->getComponent('cache');
		if($cache!==null){
			$cache->flush();
			echo "Done.\n";
		}
		else {
			echo "Please configure cache component.\n";
		}
	}
	public function actionAssets()
	{
		if(empty($this->webRoot))
		{
			echo "Please specify a path to webRoot in command properties.\n";
			Yii::app()->end();
		}
		$this->cleanDir($this->webRoot.'/assets');
		echo "Done.\n";
	}
	public function actionRuntime()
	{
		$this->cleanDir(Yii::app()->getRuntimePath());
		echo "Done.\n";
	}
	private function cleanDir($dir)
	{
		$di = new DirectoryIterator ($dir);
		foreach($di as $d)
		{
			if(!$d->isDot())
			{
				echo "Removed ".$d->getPathname()."\n";
				$this->removeDirRecursive($d->getPathname());
			}
		}
	}
	private function removeDirRecursive($dir)
	{
		$files = glob($dir.'*', GLOB_MARK);
		foreach ($files as $file)
		{
			if (is_dir($file))
			$this->removeDirRecursive($file);
			else
			unlink($file);
		}
		if (is_dir($dir))
		rmdir($dir);
	}
}

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

<?php

// This is the configuration for yiic console application.
// Any writable CConsoleApplication properties can be configured here.
return array(
    'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',
    'name' => 'My Console Application',
    'import'=>array( //可以使用model等
        'application.models.*',
        'application.components.*',
    ),
    'components'=>array( 
        'db'=>require(dirname(__FILE__) . '/db.php')
    ),
    'commandMap' => array(
        'clean' => array(
            'class' => 'ext.clean_command.ECleanCommand',
            'webRoot' => 'E:\Apache2\htdocs\webapp', //注意修改 class::webRoot
        ),
        'rbac' => array(
            'class' => 'application.commands.shell.RbacCommand',
        )
    ),
);

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

yiic clean

Usage: E:\Apache2\htdocs\webapp\protected\yiic.php clean <action>
Actions:
    cache
    assets
    runtime

yiic.php clean cache
yiic clean assets

E:\Apache2\htdocs\webapp\protected>yiic clean assets
Removed E:\Apache2\htdocs\webapp/assets\1f5cfc05
Removed E:\Apache2\htdocs\webapp/assets\836290cc
Done.

yiic clean runtime

单一任务

<?php
class TestCommand extends CConsoleCommand
{
	public function getHelp()
	{
        //php.exe crons.php help test
	    return '这里显示命令的帮助信息';
	}

	/**
	 * Execute the action.
	 * @param array command line parameters specific for this command
	 */
	public function run($args)
	{
		if(!isset($args[0]))
			$this->usageError('请输入参数.');
		echo('你输入的参数是 :\n');
		var_dump($args);
		return 1; #必须返回数字
	}
}

 /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系统。

crontab -e
##然后输入
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会报错

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

    Yii 框架入口脚本示例分析

    本文实例讲述了Yii 框架入口脚本。分享给大家供大家参考,具体如下: 入口脚本 入口脚本是应用启动流程中的第一环, 一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。 终端用户的请求通过入口脚本实例化...

    yii2 console 集成swoole 执行异步任务,例如注册邮件,发送短信

    yii2 console 集成swoole 执行异步任务,例如注册邮件,发送短信 使用方法:http://blog.csdn.net/nextvary/article/details/79136058

    yii2-consolelog:yii2的控制台日志

    "pahanini/yii2-consolelog": "*" 到composer.json文件的require部分。 用法 return [ 'id' =&gt; 'app-console' , 'bootstrap' =&gt; [ 'log' ], 'components' =&gt; [ 'log' =&gt; [ 'targets' =&gt; [ [ '...

    在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析

    主要介绍了在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析的相关资料,需要的朋友可以参考下

    yii框架yii框架yii框架yii框架yii框架

    很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架

    Yii2+Swoole开发的定时任务管理系统,带预警邮件通知(Crontab).zip

    Yii2+Swoole开发的定时任务管理系统,带预警邮件通知(Crontab).zip 功能列表 用户管理 权限管理 邮件预警 立即执行任务 (python+shell) 定时任务(python+shell),支持秒级定时任务,服务稳定完美运行 定时...

    yii框架通过控制台命令创建定时任务示例

    假设Yii项目路径为 /home/apps/ 1. 创建文件 /home/apps/protected/commands/crons.php 复制代码 代码如下:&lt;?php $yii = ‘/home/apps/framework/yii.php’; require_once($yii);  $configFile = dirname(__FILE...

    YII2框架使用控制台命令的方法分析

    有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。 我们在commands目录下创建TestController.php,当然脚本的位置是可以随意指定的,只需要在config/console.php中配置好就行。 $...

    yii2-schemadump:从现有数据库生成模式

    yii2-schemadump 从现有数据库生成模式。... ], 'controllerMap' =&gt; [ 'migrate' =&gt; [ 'class' =&gt; yii\console\controllers\ MigrateController ::class, 'templateFile' =&gt; '@jamband/schemadump/template.php' ,

    yii2 commands模式以及配置crontab定时任务的方法

    下面小编就为大家带来一篇yii2 commands模式以及配置crontab定时任务的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    yii2-bash-completion:Yii2 bash完成脚本

    Yii2 bash完成脚本 完成yii2控制台命令 脚本解析./yii help命令的输出以及完整的命令和选项 要使用这些例程: 将此文件复制到某个位置(例如~/yii2-completion.bash )。 source ~/yii2-completion.bash添加到您的...

    yii2-console:控制台应用程序的Yii2 Framework模板

    yii2-console:控制台应用程序的Yii2 Framework模板

    Yii2.0打造京东商城平台PHP电商实战Yii2.0视频教程

    Yii2.0级基于Yii1.X完全重写的,不仅是小版本升级的升级。所以想要系统学习Yii2.0这个框架这套教程可以从实战项目带你入手。不错的学习YII框架的基础课程,电商系统的结构完整、框架资源太大,传百度网盘了,链接在...

    深入理解Yii2.0

    《深入理解Yii2.0》是一本干货。主要讲解Yii2.0及所代表的最新一代Web开发框架的新特性、新技术、新理念、新模式。 采用的方式是分析框架的源代码,尝试从根上进行理解和阐述,并融入个人使用Yii开发的一些经验和...

    yii framework(Yii)框架window版

    Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上...

    yii1.1.10 开发包(包含yii权威指南以及yii博客例子讲解)

    yii1.1.10 开发包(包含yii权威指南以及yii博客例子讲解)

    关于Yii2框架跑脚本时内存泄漏问题的分析与解决

    现象 在跑 edu_ocr_img 表的归档时,每跑几万个数据,都会报一次内存耗尽 ... 跟踪代码发现,是在插入时以下代码造成的: EduOCRTaskBackup::getDb()-&gt;createCommand()-&gt;batchInsert(EduOCRTaskBackup::tableName()...

    Yii权威指南思维导图

    Yii权威指南思维导图 yii类结构 类导图 权威指南

    Yii 中文帮助文档

    Yii 是什么 Yii 是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。它将 Web 编程中的可重用性发挥到极致,能够显著加速开发进程。Yii(读作“易”)代表简单(easy)、高效(efficient)、可扩展(extensible)。...

Global site tag (gtag.js) - Google Analytics