目次
yii 計画されたタスク、yii
ホームページ バックエンド開発 PHPチュートリアル yii スケジュールされたタスク、yii_PHP チュートリアル

yii スケジュールされたタスク、yii_PHP チュートリアル

Jul 13, 2016 am 10:10 AM
yii

yii 計画されたタスク、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.comtru​​ehttp://www.bkjia.com/PHPjc/939717.html技術記事 yii スケジュールされたタスク、yii Yii フレームワークによって自動的に生成された Web アプリケーション スケルトンのディレクトリには、2 つのスクリプト ファイル yiic と yiic.bat が含まれています。 yiic は Unix/Linux プラットフォーム用で、yiic.bat は Windows プラットフォーム用です。 ...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

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 と Phalcon: グラフィック レンダリング アプリケーションの開発にはどちらのフレームワークが適していますか? Yii2 と Phalcon: グラフィック レンダリング アプリケーションの開発にはどちらのフレームワークが適していますか? Jun 19, 2023 am 08:09 AM

現在の情報化時代では、ビッグデータ、人工知能、クラウド コンピューティング、その他のテクノロジーが大手企業の焦点となっています。その中でも、高性能なグラフィックス処理技術として、グラフィックスカードレンダリング技術がますます注目を集めています。グラフィックス カード レンダリング テクノロジは、ゲーム開発、映画やテレビの特殊効果、エンジニアリング モデリングなどの分野で広く使用されています。開発者にとって、自分のプロジェクトに合ったフレームワークを選択することは非常に重要な決定です。現在の言語の中でも PHP は非常に動的な言語であり、Yii2、Ph などの優れた PHP フレームワークもいくつかあります。

Yii フレームワークでのデータクエリ: データに効率的にアクセスする Yii フレームワークでのデータクエリ: データに効率的にアクセスする Jun 21, 2023 am 11:22 AM

Yii フレームワークは、Web アプリケーション開発のプロセスを簡素化するための多数のツールとコンポーネントを提供するオープンソースの PHP Web アプリケーション フレームワークであり、その重要なコンポーネントの 1 つがデータ クエリです。 Yii フレームワークでは、SQL に似た構文を使用してデータベースにアクセスし、データを効率的にクエリおよび操作できます。 Yii フレームワークのクエリビルダーには主に次の種類があります: ActiveRecord クエリ、QueryBuilder クエリ、コマンド クエリ、独自の SQL クエリ

Symfony と Yii2: 大規模な Web アプリケーションの開発にはどちらのフレームワークが適していますか? Symfony と Yii2: 大規模な Web アプリケーションの開発にはどちらのフレームワークが適していますか? Jun 19, 2023 am 10:57 AM

Web アプリケーションの需要が高まるにつれ、開発者が開発フレームワークを選択する選択肢はますます増えています。 PHP フレームワークとして人気のある Symfony と Yii2 は、どちらも強力な機能とパフォーマンスを備えていますが、大規模な 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 月にリリースされた Yii 2.0 の新機能の概要を説明しています。うーん> この Yii2 によるプログラミング シリーズでは、読者に Yii2PHP フレームワークの使い方をガイドします。今日のチュートリアルでは、Yii のコンソール機能を活用して cron ジョブを実行する方法を共有します。以前、私はバックグラウンド タスクを実行するために cron ジョブで wget (Web アクセス可能な URL) を使用しました。これにより、セキュリティ上の懸念が生じ、パフォーマンス上の問題も発生します。 Security for Startup シリーズでリスクを軽減するいくつかの方法について説明しましたが、コンソール駆動のコマンドに移行したいと考えていました。

Yii フレームワークのフォームビルダー: 複雑なフォームの構築 Yii フレームワークのフォームビルダー: 複雑なフォームの構築 Jun 21, 2023 am 10:09 AM

インターネットの急速な発展に伴い、Web アプリケーションはますます人々の生活に欠かせないものになってきています。フォームは Web アプリケーションに不可欠な要素の 1 つであり、Web アプリケーションがユーザーに適切にサービスを提供できるようにユーザー データを収集するために使用されます。 Yii フレームワークは、開発者が Web アプリケーションをより迅速に開発できるようにする、高速、効率的、柔軟な PHP フレームワークです。 Yii フレームワークのフォームビルダー (FormBuilder) を使用すると、開発者は複雑なフォームを簡単に構築できるため、Web アプリケーションがより優れたものになります。

See all articles