我可以在 Symfony2 命令的执行之间存储一个值吗?
Can I store a value between executions of a Symfony2 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';
}
}
I already know I can't just store it as a protected variable on the Command Class itself (I tried it and that doesn't work).
这是因为每次您 运行 命令都是一个新进程。
Is there a way to store data between executions of a command without storing that information in the database or writing to a file?
没有
同样,每个命令 运行 在一个单独的进程中,因此它们之间不共享内存。使用 APCu 存储您的内容的事件将不起作用(出于同样的原因)。
如果你想在 运行 之间保留一些东西,你需要将它存储在某种可以在进程(如文件系统、数据库、redis/memcached 等)之间共享的缓存中。
我已经知道我不能将它作为受保护的变量存储在命令 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';
}
}
I already know I can't just store it as a protected variable on the Command Class itself (I tried it and that doesn't work).
这是因为每次您 运行 命令都是一个新进程。
Is there a way to store data between executions of a command without storing that information in the database or writing to a file?
没有
同样,每个命令 运行 在一个单独的进程中,因此它们之间不共享内存。使用 APCu 存储您的内容的事件将不起作用(出于同样的原因)。
如果你想在 运行 之间保留一些东西,你需要将它存储在某种可以在进程(如文件系统、数据库、redis/memcached 等)之间共享的缓存中。