Panoramica dell'inizializzazione e dell'avvio
Per eseguire l'applicazione Commerce, le azioni seguenti sono implementate in pub/index.php:
- Includi app/bootstrap.php, che esegue routine di inizializzazione essenziali come la gestione degli errori, l'inizializzazione dell'autoloader, l'impostazione delle opzioni di profilatura e l'impostazione del fuso orario predefinito.
- Crea un'istanza di \Magento\Framework\App\Bootstrap.php
- Crea un'istanza dell'applicazione Commerce: \Magento\Framework\AppInterface
- Esegui Commerce
Bootstrap logica di esecuzione
L'oggetto bootstrap utilizza il seguente algoritmo per eseguire l'applicazione Commerce:
-
Inizializza il gestore degli errori.
-
Crea object manager e servizi condivisi di base utilizzati ovunque e interessati dall'ambiente. I parametri dell’ambiente vengono inseriti correttamente in questi oggetti.
-
Asserisce che la modalità di manutenzione è non abilitata; in caso contrario, termina.
-
Asserisce che l'applicazione Commerce è installata; in caso contrario, termina.
-
Avvia l'applicazione Commerce.
Qualsiasi eccezione non rilevata durante l'avvio dell'applicazione viene automaticamente restituita a Commerce nel metodo
catchException()
che è possibile utilizzare per gestire l'eccezione. Quest'ultimo deve restituiretrue
ofalse
:- Se
true
: Commerce ha gestito l'eccezione correttamente. Non c'è bisogno di fare altro. - Se
false
: (o qualsiasi altro risultato vuoto) Commerce non ha gestito l'eccezione. L'oggetto bootstrap esegue la subroutine predefinita per la gestione delle eccezioni.
- Se
-
Invia la risposta fornita dall'oggetto applicativo.
note info INFO Il comportamento predefinito della classe \Magento\Framework\App\Bootstrap
è costituito dalle asserzioni che indicano che l'applicazione Commerce è installata e non in modalità di manutenzione. È possibile modificarlo utilizzando uno script del punto di ingresso durante la creazione dell'oggetto bootstrap.Script di esempio del punto di ingresso che modifica l'oggetto bootstrap:
code language-php <?php use Magento\Framework\App\Bootstrap; require __DIR__ . '/app/bootstrap.php'; $params = $_SERVER; $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = true; // default false $params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false; // default true $bootstrap = Bootstrap::create(BP, $params); /** @var \Magento\Framework\App\Http $app */ $app = $bootstrap->createApplication('Magento\Framework\App\Http'); $bootstrap->run($app);
Gestione eccezioni predefinita
L'oggetto bootstrap specifica il modo in cui l'applicazione Commerce gestisce le eccezioni non rilevate nel modo seguente:
- In modalità sviluppatore, visualizza l'eccezione così com'è.
- In qualsiasi altra modalità, tenta di registrare un’eccezione e di visualizzare un messaggio di errore generico.
- Termina Commerce con codice di errore
1
Applicazioni entry-point
Abbiamo le seguenti applicazioni del punto di ingresso (ovvero, applicazioni definite da Commerce che vengono utilizzate dal server web come indice di directory):
Punto di ingresso HTTP
\Magento\Framework\App\Http funziona come segue:
-
Determina l'area applicazione.
-
Avvia il controller anteriore e i sistemi di routing per individuare ed eseguire un'azione del controller.
-
Utilizza un oggetto di risposta HTTP per restituire il risultato ottenuto dall’azione del controller.
-
Gestione degli errori (nell’ordine di priorità seguente):
-
Se si utilizza la modalità sviluppatore:
- Se l'applicazione Commerce non è installata, reindirizzare all'Installazione guidata.
- Se l'applicazione Commerce è installata, visualizzare un errore e il codice di stato HTTP 500 (Errore interno del server).
-
Se l’applicazione Commerce è in modalità manutenzione, visualizza una pagina di destinazione intuitiva "Servizio non disponibile" con codice di stato HTTP 503 (Servizio non disponibile).
-
Se l'applicazione Commerce è installata not, reindirizzare all'Installazione guidata.
-
Se la sessione non è valida, reindirizzare alla home page.
-
In caso di altri errori di inizializzazione dell'applicazione, visualizzare una pagina intuitiva denominata "Pagina non trovata" con codice di stato HTTP 404 (non trovato).
-
In caso di altri errori, visualizza una pagina semplice di "Servizio non disponibile" con la risposta HTTP 503, genera un rapporto di errore e visualizza il relativo ID sulla pagina.
-
Punto di ingresso risorsa statica
\Magento\Framework\App\StaticResource è un'applicazione per il recupero di risorse statiche, ad esempio CSS, JavaScript e immagini. Posticipa qualsiasi azione con una risorsa statica fino a quando la risorsa non viene richiesta.
<your Commerce install dir>/pub/static
.In modalità predefinita o sviluppatore, una richiesta per una risorsa statica inesistente viene reindirizzata al punto di ingresso statico in base alle regole di riscrittura specificate da .htaccess
appropriato.
Quando la richiesta viene reindirizzata al punto di ingresso, l’applicazione Commerce analizza l’URL richiesto in base ai parametri recuperati e trova la risorsa richiesta.
-
In modalità sviluppatore, il contenuto del file viene restituito in modo che ogni volta che viene richiesta la risorsa, il contenuto restituito sia aggiornato.
-
In modalità default, la risorsa recuperata viene pubblicata in modo che sia accessibile dall'URL richiesto in precedenza.
Tutte le richieste future per la risorsa statica vengono elaborate dal server allo stesso modo dei file statici, ovvero senza coinvolgere il punto di ingresso. Se è necessario sincronizzare i file pubblicati con quelli originali, è necessario rimuovere la directory
pub/static
. Di conseguenza, i file vengono ripubblicati automaticamente con la richiesta successiva.
Punto di ingresso risorse multimediali
Magento\MediaStorage\App\Media recupera le risorse multimediali (ovvero tutti i file caricati nell'archivio multimediale) dal database. Viene utilizzato ogni volta che il database viene configurato come archivio multimediale.
\Magento\Core\App\Media
tenta di trovare il file multimediale nell'archivio del database configurato e di scriverlo nella directory pub/static
, quindi di restituirne il contenuto. In caso di errore, restituisce un codice di stato HTTP 404 (Non trovato) nell’intestazione senza contenuto.