2011-11-10 12 views

risposta

3

Ho cercato di decidere come implementarlo. Da un lato, Symfony2 fornisce una buona cache di produzione, quindi se non stai modificando in modo distruttivo lo schema del tuo database (rimuovendo colonne o tabelle, ecc.), Probabilmente puoi fare a meno di cambiare lo schema, distribuire dal repository, quindi cancellare il tuo prod cache. Ecco come gestisco le cose la maggior parte del tempo.

D'altra parte, se si vuole entrare in modalità di manutenzione, si vorrà una soluzione che abbia un carico minimo sul framework (cioè, probabilmente non si voglia accendere il kernel), oppure Stai comunque sconfiggendo lo scopo: togli il carico dalla struttura mentre muli di cose.

Se si trattasse di me, probabilmente sarei scrivere un semplice script di manutenzione che solo imposta un colpo di testa 503, forse serve un po 'di html statico (pregenerato dai miei modelli di sito) e lo invia all'utente, quindi utilizzare alcuni condizionale logica nel mio app.php da usare quando dovrei essere in modalità manutenzione. È brutto, ma funziona.

+0

È davvero così coinvolto? Non puoi semplicemente aggiungere un percorso con caratteri jolly basato su un'opzione di configurazione? –

+0

L'unico problema è che richiede il caricamento del framework. Se le tue modifiche non interrompono le cose mentre stai aggiornando, questa è davvero la strada da percorrere. Altrimenti, uno script manuale è probabilmente la scelta migliore. – Problematic

+0

Sostituisco il file app.php con un file maintenance.php che ho creato. non appena la distribuzione è finita, l'app.php viene rimandato. – tmas

1

Non so come fare per un sito più grande in cui un utente potrebbe trovarsi nel mezzo di un qualche tipo di transazione (shopping per esempio) ma per un sito più piccolo non si può semplicemente usare un file .htaccess (quello nella directory web assumendo che sia la tua root) per reindirizzare ad alcune pagine di manutenzione invece che ad app.php.

5

Ho appena trovato un pacchetto per Symfony 2, che offre 2 comandi extra nella console per mettere l'applicazione in modalità di manutenzione. Qui vai: https://github.com/lexik/LexikMaintenanceBundle

+1

LexikMaintenanceBundle, sebbene sia buono, richiede a Symfony di funzionare. CorleyMaintenanceBundle, a mio parere, è migliore, poiché funziona a livello Apache/Nginx. – TheFrost

1

Posso consigliare l'utilizzo del deployer (http://deployer.org/) per distribuire l'applicazione Symfony2. In questo modo non hai bisogno di una pagina di manutenzione. Lo strumento viene fornito con un modello symfony2 e symfony3 già incluso. Genera le tue risorse, riscalda la cache e tiene traccia delle tue directory di rilascio. È facile ripristinare anche una versione precedente. c'è un link "corrente" che punta sempre alla directory di rilascio corrente. Se una distribuzione di rilascio è completa, questo collegamento si aggiorna alla directory di rilascio appena creata.

Per quanto riguarda le migrazioni di dottrina è necessario scrivere un'attività personalizzata per quello.

Problemi correlati