2017-03-15 2 views
0

私はすでに、Command Class自体の保護された変数として保存することはできないことを知っています(私はそれを試しても動作しません)。その情報をデータベースに格納したり、ファイルに書き込んだりすることなく、コマンドの実行間にデータを格納する方法はありますか?Symfony2コマンドの実行間に値を格納することはできますか?

基本的には、2分ごとにコマンドを実行していますが、コマンドを実行するたびに変更されるフラグを設定します。

コマンドを実行するたびに保護された変数がsnc_redis.dashboard1に初期化されているため、次のコードは機能しません。

protected $redisDb = 'snc_redis.dashboard1'; 

protected function execute(InputInterface $input, OutputInterface $output) 
{ 
    if ($this->redisDb == 'snc_redis.dashboard1') { 
     $this->redisDb = 'snc_redis.dashboard2'; 
    } 
    else { 
     $this->redisDb = 'snc_redis.dashboard1'; 
    } 
} 
+0

多分、あなたはそれを何らかのメモリ内キャッシュに保存することができます。あなたはMemcacheについて聞いたことがありますか? –

+0

ええ、以前はmemcacheを使用しましたが、直接は使用しませんでした。私は完全にどこかのredis dbに値を格納することができました。コマンド実行の間にプロパティを維持するためにsymfonyに組み込まれた方法があるかどうか疑問に思っていましたか? –

+0

各PHPの実行は完全にクリアなコンテキストを持っていますので、ディスクまたはメモリに保存しない限り、実行ごとに生成された情報は消えません。 – Carlos

答えて

5

私はすでに、私はちょうどコマンドクラス自体(私はそれを試してみましたが、それが動作しない)上の保護された変数として保存することはできません知っています。

これは、コマンドを実行するたびに新しいプロセスになるためです。

コマンドを実行する間に、その情報をデータベースに保存したり、ファイルに書き込んだりすることなく、データを保存する方法はありますか?

は再び、各コマンドは、別のプロセスで実行されるので、それらの間で共有全くメモリがありません。 APCuであなたのものを保存しているイベントは(同じ理由で)うまくいかないでしょう。

実行の間に何かを保持したい場合は、プロセス間で共有できる何らかのキャッシュ(ファイルシステム、データベース、redis/memcachedなど)を格納する必要があります。

関連する問題