Cache a Class Loader
Warning: You are browsing the documentation for Symfony 2.x, which is no longer maintained.
Read the updated version of this page for Symfony 7.1 (the current stable version).
Finding the file for a particular class can be an expensive task. Luckily,
the ClassLoader component comes with two classes to cache the mapping
from a class to its containing file. Both the ApcClassLoader
and the XcacheClassLoader wrap
around an object which implements a findFile()
method to find the file
for a class.
Note
Both the ApcClassLoader
and the XcacheClassLoader
can be used
to cache Composer's autoloader.
ApcClassLoader
ApcClassLoader
wraps an existing class loader and caches calls to its
findFile()
method using APC:
1 2 3 4 5 6 7 8 9 10 11 12 13
require_once '/path/to/src/Symfony/Component/ClassLoader/ApcClassLoader.php';
// instance of a class that implements a findFile() method, like the ClassLoader
$loader = ...;
// sha1(__FILE__) generates an APC namespace prefix
$cachedLoader = new ApcClassLoader(sha1(__FILE__), $loader);
// registers the cached class loader
$cachedLoader->register();
// deactivates the original, non-cached loader if it was registered previously
$loader->unregister();
XcacheClassLoader
XcacheClassLoader
uses XCache to cache a class loader. Registering
it is straightforward:
1 2 3 4 5 6 7 8 9 10 11 12 13
require_once '/path/to/src/Symfony/Component/ClassLoader/XcacheClassLoader.php';
// instance of a class that implements a findFile() method, like the ClassLoader
$loader = ...;
// sha1(__FILE__) generates an XCache namespace prefix
$cachedLoader = new XcacheClassLoader(sha1(__FILE__), $loader);
// registers the cached class loader
$cachedLoader->register();
// deactivates the original, non-cached loader if it was registered previously
$loader->unregister();