Riempimento manuale della cache del codice operativo per l'intera app utilizzando apc_compile_file, quindi passaggio alla nuova versione

StackOverflow https://stackoverflow.com/questions/2834942

Domanda

Qualcuno ha un ottimo sistema, o qualche idea, per fare come dice il titolo?

Voglio cambiare la versione di produzione dell'app Web, scritta in PHP e servita da Apache, dalla versione 1234 alla versione 1235, ma prima che ciò accada, ho già tutti i file nella cache del codice operativo (APC).Quindi, dopo il passaggio, rimuovere le vecchie voci della cache per i file dalla versione 1234.

Per quanto mi viene in mente, ci sono tre semplici modi per passare atomicamente da una versione a quella successiva.

  1. Avere un collegamento simbolico, ad esempio /live, che è sempre la radice del documento ma viene modificato per puntare da una versione a quella successiva.
  2. Allo stesso modo, avere a directory /live che è sempre la root del documento, ma usa

    mv live vecchia versione && mv nuova versione live

    per passare alla nuova versione.

  3. Modifica la configurazione di Apache per modificare la root del documento in nuova versione, quindi riavvia Apache.

Penso che sia preferibile non doverne fare 3, ma non riesco comunque a pensare di precompilare tutti i file php E usare 1 o 2 per cambiare versione.

Quindi qualcuno può convincermi che va bene fare affidamento sull'opzione 3, o dirmi come lavorare con 1 o 2, o rivelare qualche altra opzione a cui non sto pensando?

È stato utile?

Soluzione

Esattamente perché vuoi farlo?

Quando passo a una nuova versione, interrompo semplicemente Apache, sostituisco i file PHP sul server tramite checkout dal mio VCS e riavvio Apache.Nella maggior parte dei casi ci vogliono meno di 30 secondi per realizzarlo, è persino programmabile.Tutto ciò viene eseguito in un momento in cui ci sono pochi o nessun utente.Successivamente, la cache del codice operativo sarà vuota e si riempirà non appena qualcuno utilizzerà i file.

Forse i primi colpi non avranno prestazioni ottimali, ma non dovrebbe essere poi così male.Sui miei sistemi di produzione nessuno ha mai notato questo breve calo di prestazioni.E tra questi ci sono alcuni sistemi di carico davvero pesanti.

Puoi anche inserire un semplice "aggiornamento...tornerò presto" sul tuo server mentre sostituisci i file per evitare messaggi di errore fastidiosi per i tuoi utenti.

Altri suggerimenti

Quindi dopo l'interruttore, rimuovere le vecchie voci della cache per i file dalla versione 1234.

Puoi svuotare solo l'intera cache o nessuna.Non è un processo selettivo.Ciò potrebbe cambiare il tuo approccio al problema.Se la precompilazione è fondamentale potresti essere costretto a chiudere il server durante il passaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top