3

今日、Artisan Command のライフサイクルに関して奇妙なことに出くわしました。

  1. という名前の職人コマンドを追加しましたcronjobs:MyCommand
  2. 必要なファイルとクラスを作成しました。
  3. クラスMyCommandが拡張しBaseCommandます。

BaseCommandは、コマンド ライン操作のベンチマークに使用したものです。コンストラクタとデストラクタで構成されます。コンストラクターは操作の開始時刻を追跡し、デストラクタは現在時刻から開始時刻を引いたものをログ テーブルに記録します。

驚いたことに、 via artisanを発行するたびに__destruct()、 my の関数が合計 5 回呼び出されることがわかりました。BaseCommandcronjobs:MyCommand

これは正常な動作ですか? もしそうなら、代わりにどのようにロギングを処理することになっていますか?

4

2 に答える 2

1

Symfony 2 のコマンド クラスでさらにテストした結果、これは Symfony 2 固有の問題であり、laravel 4 ではそれほど問題ではないことが示されました。

artisan コマンドのクラス (またはその親) でコンストラクター/デストラクターを有用な方法で使用することは、現時点では不可能に思えます。

どんな意見でも大歓迎です!

于 2013-09-09T09:52:43.460 に答える