Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
simplified cache warmers
Here are the new simplified rules:

 * Required cache warmers are *always* executed when the Kernel boots for the first time;
 * Optional cache warmers are *only* executed from the CLI via cache:warmup

These new rules means that all the configuration settings for the cache
warmers have been removed. So, if you want the best performance, remember to
warmup the cache when going to production.

This also fixed quite a few bugs.
  • Loading branch information
fabpot committed Jun 7, 2011
1 parent b76eec7 commit 96fc666
Show file tree
Hide file tree
Showing 29 changed files with 114 additions and 448 deletions.
Expand Up @@ -53,10 +53,10 @@ public function warmUp($cacheDir)
/**
* Checks whether this warmer is optional or not.
*
* @return Boolean always false
* @return Boolean always true
*/
public function isOptional()
{
return false;
return true;
}
}
Expand Up @@ -55,10 +55,10 @@ public function warmUp($cacheDir)
/**
* Checks whether this warmer is optional or not.
*
* @return Boolean always false
* @return Boolean always true
*/
public function isOptional()
{
return false;
return true;
}
}
Expand Up @@ -53,7 +53,7 @@ protected function configure()
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$router = $this->container->get('router.real');
$router = $this->container->get('router');

$dumpOptions = array();
if ($input->getArgument('script_name')) {
Expand Down
Expand Up @@ -42,9 +42,5 @@ public function process(ContainerBuilder $container)
$warmers = call_user_func_array('array_merge', $warmers);

$container->getDefinition('cache_warmer')->replaceArgument(0, $warmers);

if ('full' === $container->getParameter('kernel.cache_warmup')) {
$container->getDefinition('cache_warmer')->addMethodCall('enableOptionalWarmers', array());
}
}
}
Expand Up @@ -46,7 +46,6 @@ public function getConfigTreeBuilder()

$rootNode
->children()
->scalarNode('cache_warmer')->defaultValue(!$this->debug)->end()
->scalarNode('charset')->end()
->scalarNode('secret')->isRequired()->end()
->scalarNode('exception_controller')->defaultValue('Symfony\\Bundle\\FrameworkBundle\\Controller\\ExceptionController::showAction')->end()
Expand Down Expand Up @@ -144,7 +143,6 @@ private function addRouterSection(ArrayNodeDefinition $rootNode)
->arrayNode('router')
->canBeUnset()
->children()
->scalarNode('cache_warmer')->defaultFalse()->end()
->scalarNode('resource')->isRequired()->end()
->scalarNode('type')->end()
->scalarNode('http_port')->defaultValue(80)->end()
Expand Down Expand Up @@ -231,7 +229,6 @@ private function addTemplatingSection(ArrayNodeDefinition $rootNode)
->end()
->end()
->scalarNode('cache')->end()
->scalarNode('cache_warmer')->defaultFalse()->end()
->end()
->fixXmlConfig('engine')
->children()
Expand Down
Expand Up @@ -60,7 +60,6 @@ public function load(array $configs, ContainerBuilder $container)
$configuration = new Configuration($container->getParameter('kernel.debug'));
$config = $processor->processConfiguration($configuration, $configs);

$container->setParameter('kernel.cache_warmup', $config['cache_warmer']);
if (isset($config['charset'])) {
$container->setParameter('kernel.charset', $config['charset']);
}
Expand Down Expand Up @@ -242,19 +241,14 @@ private function registerRouterConfiguration(array $config, ContainerBuilder $co
$loader->load('routing.xml');

$container->setParameter('router.resource', $config['resource']);
$router = $container->findDefinition('router.real');
$router = $container->findDefinition('router');

if (isset($config['type'])) {
$argument = $router->getArgument(2);
$argument['resource_type'] = $config['type'];
$router->replaceArgument(2, $argument);
}

if ($config['cache_warmer']) {
$container->getDefinition('router.cache_warmer')->addTag('kernel.cache_warmer');
$container->setAlias('router', 'router.cached');
}

$container->setParameter('request_listener.http_port', $config['http_port']);
$container->setParameter('request_listener.https_port', $config['https_port']);

Expand Down Expand Up @@ -369,16 +363,6 @@ private function registerTemplatingConfiguration(array $config, $ide, ContainerB
$container->setDefinition('templating.loader', $loaderCache);
}

if ($config['cache_warmer']) {
$container
->getDefinition('templating.cache_warmer.template_paths')
->addTag('kernel.cache_warmer', array('priority' => 20))
;
$container->setAlias('templating.locator', 'templating.locator.cached');
} else {
$container->setAlias('templating.locator', 'templating.locator.uncached');
}

$this->addClassesToCompile(array(
'Symfony\\Bundle\\FrameworkBundle\\Templating\\EngineInterface',
'Symfony\\Component\\Templating\\TemplateNameParserInterface',
Expand Down
22 changes: 4 additions & 18 deletions src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml
Expand Up @@ -5,8 +5,7 @@
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

<parameters>
<parameter key="router.class">Symfony\Component\Routing\Router</parameter>
<parameter key="router.cached.class">Symfony\Bundle\FrameworkBundle\Routing\CachedRouter</parameter>
<parameter key="router.class">Symfony\Bundle\FrameworkBundle\Routing\Router</parameter>
<parameter key="routing.loader.class">Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader</parameter>
<parameter key="routing.resolver.class">Symfony\Component\Config\Loader\LoaderResolver</parameter>
<parameter key="routing.loader.xml.class">Symfony\Component\Routing\Loader\XmlFileLoader</parameter>
Expand Down Expand Up @@ -41,20 +40,15 @@
<argument type="service" id="file_locator" />
</service>

<service id="routing.loader.real" class="%routing.loader.class%">
<service id="routing.loader" class="%routing.loader.class%">
<tag name="monolog.logger" channel="router" />
<argument type="service" id="controller_name_converter" />
<argument type="service" id="logger" on-invalid="null" />
<argument type="service" id="routing.resolver" />
</service>

<service id="routing.loader" class="Symfony\Bundle\FrameworkBundle\Routing\LazyLoader" public="false">
<service id="router" class="%router.class%">
<argument type="service" id="service_container" />
<argument>routing.loader.real</argument>
</service>

<service id="router.real" class="%router.class%">
<argument type="service" id="routing.loader" />
<argument>%router.resource%</argument>
<argument type="collection">
<argument key="cache_dir">%kernel.cache_dir%</argument>
Expand All @@ -70,17 +64,9 @@
</argument>
</service>

<service id="router" alias="router.real" />

<service id="router.cached" class="%router.cached.class%">
<argument>%kernel.cache_dir%</argument>
<argument key="matcher_cache_class">%router.options.matcher.cache_class%</argument>
<argument key="generator_cache_class">%router.options.generator.cache_class%</argument>
</service>

<service id="router.cache_warmer" class="%router.cache_warmer.class%" public="false">
<tag name="kernel.cache_warmer" />
<argument type="service" id="router.real" />
<argument type="service" id="router" />
</service>
</services>
</container>
Expand Up @@ -21,22 +21,13 @@
<xsd:element name="annotations" type="annotations" minOccurs="0" maxOccurs="1" />
</xsd:all>

<xsd:attribute name="cache-warmer" type="cache_warmer" />
<xsd:attribute name="charset" type="xsd:string" />
<xsd:attribute name="error-handler" type="xsd:string" />
<xsd:attribute name="exception-controller" type="xsd:string" />
<xsd:attribute name="ide" type="xsd:string" />
<xsd:attribute name="secret" type="xsd:string" />
</xsd:complexType>

<xsd:simpleType name="cache_warmer">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="false" />
<xsd:enumeration value="full" />
<xsd:enumeration value="true" />
</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="form">
<xsd:attribute name="enabled" type="xsd:boolean" />
</xsd:complexType>
Expand Down Expand Up @@ -74,7 +65,6 @@
</xsd:complexType>

<xsd:complexType name="router">
<xsd:attribute name="cache-warmer" type="cache_warmer" />
<xsd:attribute name="resource" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="http-port" type="xsd:string" />
Expand Down Expand Up @@ -105,7 +95,6 @@
<xsd:attribute name="assets-version" type="xsd:string" />
<xsd:attribute name="assets-version-format" type="xsd:string" />
<xsd:attribute name="cache" type="xsd:string" />
<xsd:attribute name="cache-warmer" type="cache_warmer" />
</xsd:complexType>

<xsd:complexType name="package">
Expand Down
Expand Up @@ -9,7 +9,6 @@
<parameter key="templating.name_parser.class">Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser</parameter>
<parameter key="templating.cache_warmer.template_paths.class">Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplatePathsCacheWarmer</parameter>
<parameter key="templating.locator.class">Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator</parameter>
<parameter key="templating.locator.cached.class">Symfony\Bundle\FrameworkBundle\Templating\Loader\CachedTemplateLocator</parameter>
<parameter key="templating.loader.filesystem.class">Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader</parameter>
<parameter key="templating.loader.cache.class">Symfony\Component\Templating\Loader\CacheLoader</parameter>
<parameter key="templating.loader.chain.class">Symfony\Component\Templating\Loader\ChainLoader</parameter>
Expand All @@ -26,11 +25,7 @@
<argument type="service" id="kernel" />
</service>

<service id="templating.locator.uncached" class="%templating.locator.class%" public="false">
<argument type="service" id="file_locator" />
</service>

<service id="templating.locator.cached" class="%templating.locator.cached.class%" public="false">
<service id="templating.locator" class="%templating.locator.class%" public="false">
<argument>%kernel.cache_dir%</argument>
<argument type="service" id="file_locator" />
</service>
Expand All @@ -42,8 +37,9 @@
</service>

<service id="templating.cache_warmer.template_paths" class="%templating.cache_warmer.template_paths.class%" public="false">
<tag name="kernel.cache_warmer" priority="20" />
<argument type="service" id="templating.finder" />
<argument type="service" id="templating.locator.uncached" />
<argument type="service" id="templating.locator" />
</service>

<service id="templating.loader.filesystem" class="%templating.loader.filesystem.class%" public="false">
Expand Down
100 changes: 0 additions & 100 deletions src/Symfony/Bundle/FrameworkBundle/Routing/CachedRouter.php

This file was deleted.

0 comments on commit 96fc666

Please sign in to comment.