Quando dovrei usare il compilatore Magento


44

Vedo spesso la gente menzionare che usano la funzione di compilatore di Magento.

Non mi chiedo mai, quali casi dovresti usarlo e quante prestazioni hai ottenuto allora.

[DISCLAIMER]: Come ho ricevuto un suggerimento di modifica su questo recentemente. Questa domanda non riguarda la di-compilazione di magento2, non è nemmeno leggermente di magento2.


1
Vedi i miei parametri di riferimento con il compilatore: byte.nl/blog/should-i-use-the-magento-compiler
Willem

1
manca la configurazione di apc, inoltre ora abbiamo il modulo opcache nelle versioni correnti e non esiste una versione php supportata che funzioni più con apc. Il software cambia, così come le soluzioni e le soluzioni alternative.
Flyingmana,

Risposte:


43

[DISCLAIMER] Questa risposta è pensata solo per il compilatore in Magento 1, il compilatore in Magento 2 ha uno scopo / effetto completamente diverso

Non dovresti usarlo mai.

Perché PHP ha sviluppato diversi meccanismi per migliorare le applicazioni che contengono molti file.

Significa: php opCache nella versione attuale di php offre migliori miglioramenti delle prestazioni, se configurato correttamente. Ad esempio, per utilizzare un limite abbastanza alto per i file memorizzati nella cache. Inoltre opCache ha miglioramenti per le funzioni di accesso al filesystem che funzionano a un livello più profondo di aoe_classpathcache e migliora ulteriormente le prestazioni.

Alla fine abbiamo un caricamento automatico che non richiede più di qualche ms senza il compilatore. Ci sono anche casi in cui il compilatore ha danneggiato le prestazioni. Per non parlare dei pazzi problemi che richiedono tempo per il debug delle applicazioni usando il compilatore.

inoltre, opCache non migliora solo il caricamento automatico, ma anche l'ottimizzazione delle funzioni del filesystem migliora il caricamento di file di layout e template.

http://php.net/manual/en/opcache.configuration.php


2
Quindi, suggerisci di disabilitare la compilazione, cancellare i file compilati e utilizzare invece opCache?
perissf,

1
se lo riassumi, sì
Flyingmana,

3
Il compilatore è un kludge molto utile con le versioni 1.4.1.1, 1.4.2.0 e possibilmente 1.5.1.0. A partire dalla 1.5.1.0 in avanti, l'ottimizzazione del codice ha iniziato a renderla meno efficace. Da qualche parte intorno a 1.6 o 1.7, qualcuno ha fatto test A / B e ha scoperto che può effettivamente rallentare il sistema in determinate configurazioni del server.
Fiasco Labs,

3
Due impostazioni per l'interprete PHP per aiutare con i miliardi di file che possono essere fatti se si ha accesso al sistema o si può fare in modo che il proprio provider di hosting effettui la modifica per voi -> realpath_cache_size=64ke realpath_cache_ttl=3600. 64k sembra essere il punto debole, le persone hanno consigliato di più, ma i test delle prestazioni mostrano che è uno spreco di memoria.
Fiasco Labs,

2
@FiascoLabs Hai un link / fonte per i tuoi dati "Test A / B"? Sarebbe bello da vedere.
Aram Papazian,

11

"Quando dovrei usare il compilatore Magento"

Se per qualche motivo sul tuo sistema non è installato un acceleratore PHP (improbabile ma possibile)

Se stai eseguendo una versione molto vecchia di magento (non dovresti davvero essere)

Perché dovresti tenerlo disabilitato?

Sono totalmente d'accordo con il commento di Fiasco Labs sopra. Anche se non hai fornito il tuo numero di versione di Magento, questo vale per tutte le versioni di Magento (CE) oltre 1.6.1, se abiliti il ​​compilatore su un sistema che ha già un acceleratore php (come PHP-APC ecc.) Per tutto il tuo negozio , dalle pagine di amministrazione fino al check-out di un cliente sarà misurabilmente più lento, peggio ancora, molti dei plug-in / mod che trovi su magento connect non funzioneranno correttamente con il compilatore attivo.

In breve, nel 2014 non c'è mai alcun buon motivo per abilitare il compilatore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.