コンソール アプリケーションは主に、コード生成、検索インデックスのコンパイル、電子メール送信など、オンライン Web アプリケーションに必要なオフライン操作を実装するために使用されます。 Yii フレームワークは、オブジェクト指向で記述するためのコンソール アプリケーションを提供します。コンソール アプリケーションがオンライン Web アプリケーションで使用されるリソース (データベース接続情報など) にアクセスできるようにします。
1. 概要
Yii はコマンド ラインですべてのコンソール タスクを実行でき、コンソール コマンドは継承クラスです。 Cコンソールコマンド。
yiic Webapp ツールを使用して初期化された Yii アプリケーション スケルトンを作成すると、保護されたフォルダーに次の 2 つのファイルが表示されます:
yiic: これは Linux/Unix スクリプトで実行される実行可能ファイルです。
yiic.bat: これは、Windows 上で実行される実行可能なバッチ スクリプトです。
コンソール ウィンドウで、次のコマンドを入力できます:
cd protected yiic help
これにより、一連のコンソール コマンドが表示されます。デフォルトでは、これらの有効なコマンドには、Yii フレームワークによって提供されるもの (システムコマンド) と、スタンドアロンアプリケーション用に開発者自身が作成したもの (ユーザーコマンド) が含まれます。
コマンドの使用方法を確認したい場合は、次のコマンドを使用できます:
yiic help <command-name></command-name>
コマンドを実行するには、次のコマンド形式を使用できます:
yiic <command-name> [parameters...]</command-name>
2. コマンドを作成します
コンソールコマンドが保存されます。クラス ファイルの形式 CConsoleApplication::command の形式のパス。デフォルトでは、protected/commands フォルダーを指します。
コンソール コマンド クラスは、CConsoleCommand の形式である必要があります。 XyzCommand。Xyz は名前の最初の文字が大文字のコマンドを表します。たとえば、サイトマップ コマンドはクラス名 SitemapCommand を使用する必要があります。コンソール コマンド名は大文字と小文字が区別されます。
ヒント: CConsoleApplication::command の一致を構成すると、さまざまな形式で名前が付けられ、さまざまなフォルダーに保存されたコマンド クラスを取得できます。
新しい For コマンドを作成するには、多くの場合、CConsoleCommand::run() をオーバーライドするか、1 つ以上のコマンド アクションを開発する必要があります。
コンソール コマンドを実行すると、コンソール アプリケーションによって CConsoleCommand::run() メソッドが呼び出されます。すべてのコンソール パラメーターも、次のメソッド フラグメントの形式でこのメソッドに渡されます:
public function run($args) { ... }
ここで、$args はコマンド ラインで指定された追加パラメーターを表します。
コンソールコマンドでは、Yii::app()を使用してコンソールアプリケーションインスタンスにアクセスできるだけでなく、データベース接続などのリソースにもアクセスできます(例:Yii::app()->db)。この使用法は、Web アプリケーションでの使用法と非常に似ていることがわかります。
情報: バージョン 1.1.1 以降、同じマシン上のすべての Yii アプリケーションで共有されるグローバル コマンドを作成することもできます。既存のフォルダーを指すように YII_CONSOLE_COMMANDS という名前の環境変数を定義すると、グローバル コマンド クラスでこのフォルダーに配置されます。
3. コンソールコマンドアクション (アクション)
注: このコンソールコマンドアクション機能は、バージョン 1.1.5 以降で有効です。
コンソール コマンドは、さまざまなコマンド ライン パラメーターを処理する必要があることがよくあります。コンソール コマンドには、さまざまなサブタスクを処理するためのサブコマンドも提供する必要があります。これらのタスクは、コンソール コマンド アクションを使用して簡素化できます。
コンソール コマンド アクションは、コンソール コマンド クラスのメソッドです。メソッド名は、actionXyz の形式にする必要があります。Xyz は、最初の文字を大文字にしたアクション名を表します。たとえば、actionIndex メソッドは、index という名前のアクションを定義します。
特定のアクションを実行するには、次のコマンド ライン形式を使用できます:yiic <command-name> <action-name> --option1=value1 --option2=value2 ...</action-name></command-name>追加のオプションと値のペアが名前付きパラメーターとしてアクション メソッドに渡されます。xyz 操作の値は $xyz になります。パラメーターは に渡されます。アクションメソッド。たとえば、次のコマンド クラスを定義すると:
class SitemapCommand extends CConsoleCommand { public function actionIndex($type, $limit=5) { ... } public function actionInit() { ... } }次に、actionIndex('News', 5) を呼び出すと、次のコンソール コマンドの結果が得られます。が指定されている場合 (例: --type=News の代わりに --type)、対応する action パラメータ値は true であるとみなされます。 注:
はオプションのパラメーター形式 --type News、-t News をサポートしていません。パラメーター値は配列にすることができます (配列タイプのヒントが必要です):
yiic sitemap index --type=News --limit=5 // $limit takes default value yiic sitemap index --type=News // $limit takes default value // because 'index' is a default action, we can omit the action name yiic sitemap --type=News // the order of options does not matter yiic sitemap index --limit=5 --type=News
コマンドライン引数で配列値を使用するには、同じオプションを繰り返すだけです:
public function actionIndex(array $types) { ... }上記のコマンドは最終的に actionIndex(array('News', 'Article')) を呼び出します。 バージョン 1.1 以降。 6 から、Yii は匿名アクションパラメータとグローバルオプションの使用もサポートします。
匿名参数表示这些命令行参数不是以选项的形式呈现. 例如, 在命令 yiic sitemap index --limit=5 News中, 我们有一个值为News的匿名参数和命名参数 limit,其值为5。
为了使用匿名参数, 一个命令动作必须声明参数为 $args的形式. 例如,
public function actionIndex($limit=10, $args=array()) {...}
$args数组将会装入所有的匿名参数值.
全局选项代表那些命令行选项可以被一个命令中所有动作共享的选项. 例如, 在一个命令中提供了多个选项, 我们可能想要每一个动作识别一个名为verbose的动作. 当然我们可以在每一个动作方法中声明 $verbose 参数, 一个更好的方式是将其声明为这个命令类的公有成员变量, 将 verbose 转换为全局参数:
class SitemapCommand extends CConsoleCommand { public $verbose=false; public function actionIndex($type) {...} }
上面的代码允许我们执行一个带 verbose 选项的命令:
yiic sitemap index --verbose=1 --type=News
4. 退出代码
Note: 在控制台命令中退出代码的特性从版本 1.1.11起有效.
通过cronjob或者使用一个持续集成的服务器自动运行控制台命令的时候, 要么命令运行运行成功,要么命令运行失败. 这可以通过检查进程返回的退出代码来查看。
这些退出码是从0-254的整型值(this is the range in php world), 其中 0 表示退出成功其他的所有非0值表示出现了错误.
在一个动作方法或者控制台命令的 run() 方法中你可以在退出时返回整型值退出码 ,例如:
if (/* error */) { return 1; // exit with error code 1 } // ... do something ... return 0; // exit successfully
如果没有返回值, 应用将会退出返回 0.
5. 自定义控制台应用
默认情况下, 如果一个应用是使用yiic webapp工具创建的, 命令行应用的配置将会放在 protected/config/console.php文件中. 和一个Web应用配置文件一样, 这个文件是一个返回控制台应用实例的初始化配置值的数组的PHP脚本。所以CConsoleApplication的任何公有属性都可以在该文件中配置.
因为控制台命令经常被创建来服务于Web应用, 所以需要访问资源(如数据库连接)。我们可以在控制台配置文件中以如下方式来实现 :
return array( ...... 'components'=>array( 'db'=>array( ...... ), ), );
正如我们所看到的那样, 配置的格式和我们在Web应用中的配置类似.这是因为CConsoleApplication和 CWebApplication 的基类相同。
以上就是Yii框架官方指南系列50——专题:控制台应用的内容,更多相关内容请关注PHP中文网(www.php.cn)!

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

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

メモ帳++7.3.1
使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









