search
HomeBackend DevelopmentPHP Tutorialyii scheduled tasks, yii_PHP tutorial

yii scheduled task, yii

Yii框架自动生成的Web应用骨架的目录里面有连个脚步文件,yiic和yiic.bat。

yiic是Unix/Linux平台用的,yiic.bat是windows平台用的。如果要查看脚本的帮助可以进入到脚步所在的根目录,然后执行yiic help,他会列出所有可用的命令,里面包括Yii提供的系统命令和用户自定义的命令。

如果要知道如何执行一个命令可以执行以下命令:

1	yiic help
如果要执行一个命令,可以使用如下格式:

1	yiic [parameters...]
1、创建命令

控制台命令都是以类文件的方式存储在 CConsoleApplication::commandPath 指定的目录。默认是存储在 protected/commands 。

每个类必须继承自 CConsoleCommand 。类名的格式是 XyzCommand ,命令的名字首字母大写,xyz才是命令本身。

可以通过配置 CConsoleApplication::commandMap ,命令类可以有不同的命名约定和不同的目录。

创建一个新命令你可以覆盖 CConsoleCommand::run() 或者写一个或多个action.

覆盖父类的run方法格式可以是:

1	public   function   run( $args ) { ... }
当执行一个命令的时候,run方法将会被调用,任何加在调用命令后面的参数将会赋给$args。

在命令内部可以用 Yii::app() 调用这个控制台的实例。

从1.1.1版本开始,可以创建一个全局的命令,被在同一台机器上的所有的Yii应用所共享。为了达到这样的目的,你需要定义一个名为

YII_CONSOLE_COMMANDS 的环境变量,指向一个已存在的目录,然后把这个全局的命令类放在这个目录里面。

2、控制台命令Action

一个控制台命令action就是一个控制台命令类的一个方法。

方法名的格式: actionXyz ,action名的首字母大写,xyz才是被调用的action本身。

执行一个action的命令格式:

1	yiic --option1=value1 --option2=value2 ...
后面的option-value对将会赋给这个action方法的参数。如果你给出了option名而没有给出对应的值,那么这个option将会被认为是boolean值true。

action的参数也可以声明一个数组类型,如:

1	public   function   actionIndex( array   $types ) { ... }
调用它的命令是:

1	yiic sitemap index --types=News --types=Article
最终命令调用是: actionIndex(array('News', 'Article'))。

从1.1.6开始,还支持匿名参数和全局选项。

匿名参数 指的是不按正常选项参数格式(the format of options)的命令行参数,比如: yiic sitemap index --limit=5 News ,News就是一个匿名参数。

要使用匿名参数,action必须声明一个 $args变量,比如:

1	public   function   actionIndex( $limit =10, $args = array ()) {...}
$ args 会接收到所有可用的匿名参数。

全局选项 (Global options)指的是一个命令行选项被这个命令的所有action所共享。

比如:一个命令有好几个action,我们想在每个action里面都有一个名字叫 verbose 的选项,我们可以在每个action方法里面都声明一个叫 $verbose 的参数。

一个更好的做法是把它声明成这个命令类的公共成员变量( public member variable ),这样 verbose 就会成为一个全局的选项。

1	class   SitemapCommand extends   CConsoleCommand
2	{
3	public   $verbose =false;
4	public   function   actionIndex( $type ) {...}
5	}
这样就可以执行一个带 verbose 选项的命令:

1	yiic sitemap index --verbose=1 --type=News
3、退出代码

执行命令的宿主机器可能需要检测我们的命令执行成功与否,它可以通过检测命令最后退出是返回的退出码来识别。

退出码是介于0到254之间的整型值 ,0表示这个命令执行成功,非0表示这个命令执行期间出现错误。

你可以在action或者是run方法里面通过一个退出码来退出你的应用程序。

比如:

1	if   ( /* error */ ) {
2	return   1; // exit with error code 1
3	}
4	// ... do something ...
5	return   0; // exit successfully
假如没有返回值,将会有一个默认的0被返回

4、定制控制台应用

默认的控制台应用配置位置: protected/config/console.php 。

任何 CConsoleApplication 的公共属性都可以在这个文件里面配置。

这个配置文件类似于普通的web应用的配置文件。

Customizing Console Applications 

By default, if an application is created using the  yiic webapp  tool, the configuration for the console application will be  protected/config/console.php . Like a Web application configuration file, this file is a PHP script which returns an array representing the property initial values for a console application instance. As a result, any public property of  CConsoleApplication  can be configured in this file.

Because console commands are often created to serve for the Web application, they need to access the resources (such as DB connections) that are used by the latter. We can do so in the console application configuration file like the following:

return array(
    ......
    'components'=>array(
        'db'=>array(
            ......
        ),
    ),
);
As we can see, the format of the configuration is very similar to what we do in a Web application configuration. This is because both  CConsoleApplication  and  CWebApplication  share the same base class.

文章参考: http://www.yiiframework.com/doc/guide/1.1/zh_cn/topics.console

----------------------------------------------------------------------------------------------------------------------

一篇文章:

使用YII框架进行PHP程序的计划任务教程

1.当你通过yiic创建一个webapp应用后, 
会在 webapp/protected/下生成yiic.php, 由于是命令行应用,所以这里的yiic.php其实就是与webapp下的index.php一样的,命令行入口文件。

2.打开yiic文件,添加一行设置,将commands目录的路径添加到yiic中,这样,yiic就能够找到commands目录下的命令文件了,修改后的代码如下,红色为新加入代码:

1
2
3
4
5
6
$yiic =dirname( __FILE__ ). '/http://www.cnblogs.com/yii-read-only/framework/yiic.php' ;

$config =dirname( __FILE__ ). '/config/console.php' ;

@putenv( 'YII_CONSOLE_COMMANDS=' . dirname( __FILE__ ). '/commands' );

require_once ( $yiic );

或者是:

 配置好,要执行的页面。本文为 protected/commands/crons.php

run();
?>

3.配置好produ ct/config/console.php里面需要用到的组件,像数据库连接。

配置main/console.php,设置import路径,以及db连接,这部份与main.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 (
                'application.models.*',
                'application.components.*',
                'application.components.base.*',
                'application.components.imgthumb.*',
                'application.models.form.*',
                '等等,导入所要的类包'
        ),
        'components' => array (
                // Main DB connection
                'db' => array (
                        'connectionString' => 'mysql:host=localhost;dbname=数据库名称',
                        'emulatePrepare' => true,
                        'username' => '数据库名称',
                        'password' => '数据库密码',
                        'charset' => 'utf8',
                        'tablePrefix' => 'company_'、//表前缀
                ),
                'log' => array (
                        'class' => 'CLogRouter',
                        'routes' => array (
                                array (
                                        'class' => 'CFileLogRoute',
                                        'levels' => 'error, warning'
                                ) 
                        ) 
                ) 
        ) 
);
4.继承CConsoleCommand写入自己的命令类,Yii提供了两种方式去执行, 如果你执行单一的任务,直接在run方法里面写,另外一种 就是同写你的Controller(控制器),增加actionXXX即可。 
本实例采用第二种方式,即采用web程序开发的方式,在基础了CConsoleCommand的类中添加actionXXX方法来执行程序。 
我们在commands目录下创建一个文件,来执行我们要执行的任务,暂且命名为TestCommand.php 。


  

    
      4,打开你的linux命令窗口,创建自动任务。至于windows系统 ,是计划任务(win系统,可以谷歌如何操作),下面只讲linux系统。
    
  


  
crontab -e
##然后输入
1 * * * *  php /具体地址/protected/commands/crons.php Test >>/具体地址/protected/commands/test.log
##上面命令说明,每分钟执行Test任务一次,把日志保存在test.log下

  
至此,自动化任务已完成。


  
windows下面计划任务:


  
schtasks /create /sc minute /mo 1 /tn "taskPhp" /tr  "php F:\xampp\htdocs\php\yiiblog2\protected\commands\crons.php  CInsert insertData"


  
删除计划任务 schtasks /delete /tn "taskPhp"


  
每个1分钟就执行CInsert命令中的insertData方法。


  

    参考了:    http://www.cnlvzi.com/index.php/Index/article/id/124
  


  

    http://www.yiibase.com/yii/218.html
  


  

    http://www.yiiframework.com/wiki/221/cronjobsyii/
  


  

    http://986866294.blog.163.com/blog/static/1651222522013571578115/

 

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/939717.htmlTechArticleyii scheduled task, yii The directory of the Web application skeleton automatically generated by the Yii framework contains two script files, yiic and yiic.bat. yiic is for Unix/Linux platform, and yiic.bat is for Windows platform. ...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php如何使用Yii3框架?php如何使用Yii3框架?May 31, 2023 pm 10:42 PM

随着互联网的不断发展,Web应用程序开发的需求也越来越高。对于开发人员而言,开发应用程序需要一个稳定、高效、强大的框架,这样可以提高开发效率。Yii是一款领先的高性能PHP框架,它提供了丰富的特性和良好的性能。Yii3是Yii框架的下一代版本,它在Yii2的基础上进一步优化了性能和代码质量。在这篇文章中,我们将介绍如何使用Yii3框架来开发PHP应用程序。

如何使用PHP框架Yii开发一个高可用的云备份系统如何使用PHP框架Yii开发一个高可用的云备份系统Jun 27, 2023 am 09:04 AM

随着云计算技术的不断发展,数据的备份已经成为了每个企业必须要做的事情。在这样的背景下,开发一款高可用的云备份系统尤为重要。而PHP框架Yii是一款功能强大的框架,可以帮助开发者快速构建高性能的Web应用程序。下面将介绍如何使用Yii框架开发一款高可用的云备份系统。设计数据库模型在Yii框架中,数据库模型是非常重要的一部分。因为数据备份系统需要用到很多的表和关

Yii2 vs Phalcon:哪个框架更适合开发显卡渲染应用?Yii2 vs Phalcon:哪个框架更适合开发显卡渲染应用?Jun 19, 2023 am 08:09 AM

在当前信息时代,大数据、人工智能、云计算等技术已经成为了各大企业关注的热点。在这些技术中,显卡渲染技术作为一种高性能图形处理技术,受到了越来越多的关注。显卡渲染技术被广泛应用于游戏开发、影视特效、工程建模等领域。而对于开发者来说,选择一个适合自己项目的框架,是一个非常重要的决策。在当前的语言中,PHP是一种颇具活力的语言,一些优秀的PHP框架如Yii2、Ph

Yii框架中的数据查询:高效地访问数据Yii框架中的数据查询:高效地访问数据Jun 21, 2023 am 11:22 AM

Yii框架是一个开源的PHPWeb应用程序框架,提供了众多的工具和组件,简化了Web应用程序开发的流程,其中数据查询是其中一个重要的组件之一。在Yii框架中,我们可以使用类似SQL的语法来访问数据库,从而高效地查询和操作数据。Yii框架的查询构建器主要包括以下几种类型:ActiveRecord查询、QueryBuilder查询、命令查询和原始SQL查询

Symfony vs Yii2:哪个框架更适合开发大型Web应用?Symfony vs Yii2:哪个框架更适合开发大型Web应用?Jun 19, 2023 am 10:57 AM

随着Web应用需求的不断增长,开发者们在选择开发框架方面也越来越有选择的余地。Symfony和Yii2是两个备受欢迎的PHP框架,它们都具有强大的功能和性能,但在面对需要开发大型Web应用时,哪个框架更适合呢?接下来我们将对Symphony和Yii2进行比较分析,以帮助你更好地进行选择。基本概述Symphony是一个由PHP编写的开源Web应用框架,它是建立

yii如何将对象转化为数组或直接输出为json格式yii如何将对象转化为数组或直接输出为json格式Jan 08, 2021 am 10:13 AM

yii框架:本文为大家介绍了yii将对象转化为数组或直接输出为json格式的方法,具有一定的参考价值,希望能够帮助到大家。

Yii2编程指南:运行Cron服务的方法Yii2编程指南:运行Cron服务的方法Sep 01, 2023 pm 11:21 PM

如果您问“Yii是什么?”查看我之前的教程:Yii框架简介,其中回顾了Yii的优点,并概述了2014年10月发布的Yii2.0的新增功能。嗯>在这个使用Yii2编程系列中,我将指导读者使用Yii2PHP框架。在今天的教程中,我将与您分享如何利用Yii的控制台功能来运行cron作业。过去,我在cron作业中使用了wget—可通过Web访问的URL来运行我的后台任务。这引发了安全问题并存在一些性能问题。虽然我在我们的启动系列安全性专题中讨论了一些减轻风险的方法,但我曾希望过渡到控制台驱动的命令

Yii框架中的表单构建器:构建复杂表单Yii框架中的表单构建器:构建复杂表单Jun 21, 2023 am 10:09 AM

随着互联网的快速发展,Web应用越来越成为人们生活中不可或缺的一部分。而表单是Web应用中不可或缺的元素之一,其用于收集用户数据,让Web应用能够更好地为用户服务。Yii框架是一个快速、高效、灵活的PHP框架,可以帮助开发人员更加快速地开发Web应用。Yii框架中的表单构建器(FormBuilder)可以让开发人员轻松地构建复杂的表单,让Web应用具有更好

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.