我可以在Symfony2命令的执行之间存储值吗?

rob*_*oth 0 symfony symfony-2.7

我已经知道我不能只将它作为受保护变量存储在Command Class本身上(我尝试过它并且不起作用).有没有办法在命令的执行之间存储数据而不将该信息存储在数据库中或写入文件?

基本上,我每2分钟通过cron运行一个命令,但是我想设置一个每次运行命令时都会更改的标志.

以下不起作用,因为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';
    }
}
Run Code Online (Sandbox Code Playgroud)

Jak*_*las 5

我已经知道我不能只将它作为受保护变量存储在Command Class本身上(我尝试过它并且不起作用).

这是因为每次运行命令都是一个新进程.

有没有办法在命令的执行之间存储数据而不将该信息存储在数据库中或写入文件?

没有.

同样,每个命令都在一个单独的进程中运行,因此它们之间没有共享内存.用APCu存储你的东西的事件将不起作用(出于同样的原因).

如果你想在运行之间保留一些东西,你需要存储一些可以在进程之间共享的缓存(比如文件系统,数据库,redis/memcached等).