mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-16 23:48:16 +08:00
Fixes #13226: yii cache
command now warns about the fact that it's not able to flush APC cache from console
This commit is contained in:

committed by
GitHub

parent
3a8f702759
commit
70cd75c84e
@ -4,6 +4,7 @@ Yii Framework 2 Change Log
|
|||||||
2.0.12 under development
|
2.0.12 under development
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
- Enh #13226: `yii cache` command now warns about the fact that it's not able to flush APC cache from console (samdark)
|
||||||
- Bug #11719: Fixed `yii\db\Connection::$enableQueryCache` caused infinite loop when the same connection was used for `yii\caching\DbCache` (michaelarnauts)
|
- Bug #11719: Fixed `yii\db\Connection::$enableQueryCache` caused infinite loop when the same connection was used for `yii\caching\DbCache` (michaelarnauts)
|
||||||
- Bug #10346: Fixed "DOMException: Invalid Character Error" in `yii\web\XmlResponseFormatter::buildXml()` (sasha-ch)
|
- Bug #10346: Fixed "DOMException: Invalid Character Error" in `yii\web\XmlResponseFormatter::buildXml()` (sasha-ch)
|
||||||
- Bug #13694: `yii\widgets\Pjax` now sends `X-Pjax-Url` header with response to fix redirect (wleona3, Faryshta)
|
- Bug #13694: `yii\widgets\Pjax` now sends `X-Pjax-Url` header with response to fix redirect (wleona3, Faryshta)
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
namespace yii\console\controllers;
|
namespace yii\console\controllers;
|
||||||
|
|
||||||
use Yii;
|
use Yii;
|
||||||
|
use yii\caching\ApcCache;
|
||||||
use yii\console\Controller;
|
use yii\console\Controller;
|
||||||
use yii\caching\Cache;
|
use yii\caching\Cache;
|
||||||
use yii\helpers\Console;
|
use yii\helpers\Console;
|
||||||
@ -32,7 +33,7 @@ use yii\console\Exception;
|
|||||||
* configured are different from web application, web application cache won't be cleared. In order to fix it please
|
* configured are different from web application, web application cache won't be cleared. In order to fix it please
|
||||||
* duplicate web application cache components in console config. You can use any component names.
|
* duplicate web application cache components in console config. You can use any component names.
|
||||||
*
|
*
|
||||||
* Both APC and OpCache aren't shared between PHP processes so flushing cache from command line has no effect on web.
|
* APC is not shared between PHP processes so flushing cache from command line has no effect on web.
|
||||||
* Flushing web cache could be either done by:
|
* Flushing web cache could be either done by:
|
||||||
*
|
*
|
||||||
* - Putting a php file under web root and calling it via HTTP
|
* - Putting a php file under web root and calling it via HTTP
|
||||||
@ -99,7 +100,7 @@ class CacheController extends Controller
|
|||||||
$cachesInfo[] = [
|
$cachesInfo[] = [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'class' => $class,
|
'class' => $class,
|
||||||
'is_flushed' => Yii::$app->get($name)->flush(),
|
'is_flushed' => $this->canBeFlushed($class) ? Yii::$app->get($name)->flush() : false,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,7 +124,7 @@ class CacheController extends Controller
|
|||||||
$cachesInfo[] = [
|
$cachesInfo[] = [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'class' => $class,
|
'class' => $class,
|
||||||
'is_flushed' => Yii::$app->get($name)->flush(),
|
'is_flushed' => $this->canBeFlushed($class) ? Yii::$app->get($name)->flush() : false,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,7 +179,11 @@ class CacheController extends Controller
|
|||||||
$this->stdout("The following caches were found in the system:\n\n", Console::FG_YELLOW);
|
$this->stdout("The following caches were found in the system:\n\n", Console::FG_YELLOW);
|
||||||
|
|
||||||
foreach ($caches as $name => $class) {
|
foreach ($caches as $name => $class) {
|
||||||
$this->stdout("\t* $name ($class)\n", Console::FG_GREEN);
|
if ($this->canBeFlushed($class)) {
|
||||||
|
$this->stdout("\t* $name ($class)\n", Console::FG_GREEN);
|
||||||
|
} else {
|
||||||
|
$this->stdout("\t* $name ($class) - can not be flushed via console\n", Console::FG_YELLOW);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->stdout("\n");
|
$this->stdout("\n");
|
||||||
@ -256,7 +261,7 @@ class CacheController extends Controller
|
|||||||
$findAll = ($cachesNames === []);
|
$findAll = ($cachesNames === []);
|
||||||
|
|
||||||
foreach ($components as $name => $component) {
|
foreach ($components as $name => $component) {
|
||||||
if (!$findAll && !in_array($name, $cachesNames)) {
|
if (!$findAll && !in_array($name, $cachesNames, true)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,4 +286,14 @@ class CacheController extends Controller
|
|||||||
{
|
{
|
||||||
return is_subclass_of($className, Cache::className());
|
return is_subclass_of($className, Cache::className());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if cache of a certain class can be flushed
|
||||||
|
* @param string $className class name.
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function canBeFlushed($className)
|
||||||
|
{
|
||||||
|
return !is_a($className, ApcCache::className(), true) || php_sapi_name() !== "cli";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user