Skip to content

Updated Symfony HTTP cache docs #291

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Resources/doc/features/symfony-http-cache.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,24 @@ To register subscribers that you need to instantiate yourself, overwrite
return $subscribers;
}

.. warning::

Since Symfony 2.8, the class cache (``classes.php``) is compiled even in console mode
by an optional warmer (``ClassCacheCacheWarmer``). This can produce conflicting results
with the regular web entry points, because the class cache may contain definitions
(such as the subscribers above) that are autoloaded before the class cache itself;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/autoloaded/loaded/

leading to redeclaration fatal errors.

There are two workarounds:

* Disable class cache warming in console mode with e.g. a compiler pass::

$container->getDefinition('kernel.class_cache.cache_warmer')->clearTag('kernel.cache_warmer');

* Force autoloading all classes used by your custom ``HttpCache`` by constructing an
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Force loading of all classes and interfaces used by the HttpCache in app/console to have them omitted from the class cache. The simplest way is by calling class_exists or interface_exists with them.

unused instance in ``app/console``. This way the conflicting declarations are omitted
from the class cache.

Subscribers
~~~~~~~~~~~

Expand Down