The compiler in Magento makes a copy of every class used by the Magento system in the directory “includes/src” using the full class name as the filename. Thus, Magento Autoloader has to look only in the directory “includes/src” instead of traversing multiple paths.
Magento ships with a command line script “compiler.php” located in the shell directory present at the {{MAGENTO_ROOT}} of you installation.
To use this tool open the terminal window and “cd” to the “shell” directory.
cd [MAGENTO_ROOT]/shell/
To see what all you can do with this tool, run the following command:
php -f compiler.php help
To enable compilation run the following command
php -f compiler.php compile
To disable compilation run the following command
php -f compiler.php disable
When you enable the compilation, the following two lines in the file {{MAGENTO_ROOT}}/includes/config.php get uncommented automatically while on disabling the compilation the lines are commented.
#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src'); #define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');
This config.php file is included in {{MAGENTO_ROOT}}/index.php file as shown below:
/** * Compilation includes configuration file */ define('MAGENTO_ROOT', getcwd()); $compilerConfig = MAGENTO_ROOT . '/includes/config.php'; if (file_exists($compilerConfig)) { include $compilerConfig; }
Disabling the compilation does not delete the compiled files from the directory “includes/src”. To delete the compiled files, run the following command
php -f compiler.php clear
To check the compilation status run
php -f compiler.php state
NOTE:
- In order to use this tool, the directory {MAGENTO_ROOT}}/includes and the file {MAGENTO_ROOT}}/includes/config.php must both be writeable.
- Before you make any changes to your Magento installation you should always disable compilation. Once the changes are made, run the compilation process, and then enable it.
Leave a Comment