Entendendo o Compilador do Magento (Modo Compilado)

Ainda há muita discussão sobre o Compilador do Magento.

A maioria dos usuários e até desenvolvedores não entendem o que o modo compilado do Magento faz de fato. Porém o Compilador pode ser uma boa opção na hora de aumentar performance da sua loja virtual.

Entendendo o Compilador do Magento

O Compilador foi concebido devido ao grande nível de abstração do Magento. O Magento foi desenvolvido de forma modularizada, mas quando digo modularizado não é apenas em código, mas como um todo. A maior parte das funcionalidades são como um módulo. É até algo que se percebe intuitivamente ao dar uma boa olhada, não só nos módulos em si, mas na pasta Mage, onde temos o Core e outras diversas pastas, cada uma destas pasta são funcionalidades nativas, mas funcionam como os módulos que você desenvolve e/ou instala cotidianamente.

A compilação nada mais é do que fazer com que o Magento pegue todas as classes, de todas as pastas (extensões), e coloque todas em um único lugar, reduzindo o overhead da aplicação.

Usando o Compilador

Você pode ativar o Compilador via painel de admin do Magento, porém eu acho mais conveniente trabalhar com o mesmo via shell.

Para fazer isso acesse a pasta /shell onde existe o arquivo compiler.php. Como você já pensou, é o arquivo compiler que roda a Compilação do Magento.

Para ver o que podemos fazer com ele, basta passar o parâmetro help, e recebemos todos as opções.

$ cd shell
$ php -f compiler.php help

state Show Compilation State
compile Run Compilation Process
clear Disable Compiler include path and Remove compiled files
enable Enable Compiler include path
disable Disable Compiler include path
help

Para compilar, basta executar o mesmo utilizando o parâmetro compile

$ php compiler.php compile
Compilation successfully finished
$

Perfeito, a compilação foi feita e agora todas as classes que seu Magento precisa estão em um único lugar, a pasta /includes/src/. Observe a quantidade gigante de arquivos que existem nela. (No meu último projeto, haviam exatamente 6805). A informação de quantos sources existem na compilação pode ser vista tanto no painel de administrador, quanto via shell:

$ php compiler.php state
Compiler Status: Enabled
Compilation State: Compiled
Collected Files Count: 6805
Compiled Scopes Count: 4

Dessa forma, o Magento está com a seguinte ordem, leia tudo somente dos arquivos ‘compilados’ (isso pode gerar alguns problemas na sua loja caso nem tudo esteja correto).

Para desabilitar:

$ php compiler.php disable
Compiler include path disabled

Ativei o Compilador do Magento e deu erro 500! O que faço?

Acesse o arquivo url_base/includes/config.php. Nele irão existir duas linhas, provavelmente, não comentadas ou com apenas a segunda comentada. Basta comentar as linhas que a compilação será desabilitada e sua loja voltará ao normal.

Linhas a serem comentadas:

#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src');
#define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');

O que pode ter causado o erro? Provavelmente algum extensão que não segue as boas práticas do Magento. O que acontece é que alguma classe que deveria estar instanciada não foi encontrada no source compilado (/includes/src/) e isso gera um erro no servidor. O fato de comentar as linhas não resolve o problema, só faz com que a loja retorne ao estado anterior, com a compilação desabilitada.

Texto baseado no artigo do Alan Storm.

[toggle title=”Fonte”]
http://denisspalenza.com/
[/toggle]

2014-08-29T14:06:40+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x