Is there any way to flush the COutputCache (via APC) on demand?
eg. add ?flush=1 to end of URL, then detect that somewhere and do the flush.
Is there any way to flush the COutputCache (via APC) on demand?
eg. add ?flush=1 to end of URL, then detect that somewhere and do the flush.
My initial thought is something like this
class FlushableCache extends COutputCache
{
public function init()
{
if (isset($_GET['flush']) && $_GET['flush'])
$this->_cache->flush();
parent::init();
}
}
The set your application to use FlushableCache instead of COuputCache.
There might be another way to do it, but this is the only way I could think up. I didn’t see anything where you could attach a behavior to the controller or the application. That might be the preferable way, as to not add another layer of objects somewhere.
You could also introduce a base controller and put it in the init() method there. A base controller comes in handy in many situations, so i’d consider it good practice anyway.
class MyBaseController extends CController { /* ... */ }.
class SomeController extends MyBaseController { /* ... */ }
The reason I did not suggest this was because it would required more code changes than changing the output cache handler if the system wasn’t already designed in this manner.