Questa pagina contiene le istruzioni per eseguire la migrazione dal da prima a seconda generazione i runtime PHP. Per eseguire l'upgrade dell'app di seconda generazione in modo che utilizzi l'app più recente supportata di PHP, consulta l'articolo Eseguire l'upgrade di un'applicazione esistente.
Il 30 gennaio 2024 è terminato il supporto di PHP 5. Le applicazioni PHP 5 esistenti continueranno a funzionare e a ricevere traffico. Tuttavia, App Engine potrebbe bloccare il rideployment delle applicazioni che utilizzano i runtime dopo la data di fine del supporto. Ti consigliamo di eseguire la migrazione al runtime PHP più recente supportato utilizzando le linee guida riportate in questa pagina.
La migrazione a un runtime PHP di seconda generazione supportato ti consente usano funzioni linguistiche aggiornate e creano app più portabili, con codice idiomatico.
Problemi di compatibilità tra PHP 5.5 e i runtime PHP di seconda generazione
La documentazione ufficiale di PHP fornisce informazioni sulla migrazione da diverse Versioni PHP:
- Migrazione da PHP 5.5.x a PHP 5.6.x
- Migrazione da PHP 5.6.x a PHP 7.0.x
- Migrazione da PHP 7.0.x a PHP 7.1.x
- Migrazione da PHP 7.1.x a PHP 7.2.x
- Migrazione da PHP 7.2.x a PHP 7.3.x
- Migrazione da PHP 7.3.x a PHP 7.4.x
- Migrazione da PHP 7.4.x a PHP 8.0.x
- Migrazione da PHP 8.0.x a PHP 8.1.x
Differenze principali tra PHP 5.5 e i runtime PHP di seconda generazione
Di seguito è riportato un riepilogo delle differenze tra PHP 5.5 e i runtime PHP di seconda generazione nell'ambiente standard di App Engine:
Differenze nell'utilizzo della memoria
I runtime di seconda generazione registrano una base di utilizzo della memoria più elevata rispetto ai runtime di prima generazione. Ciò è dovuto a diversi fattori, come versioni diverse delle immagini di base e differenze nel modo in cui le due generazioni calcolano l'utilizzo della memoria.
I runtime di seconda generazione calcolano l'utilizzo della memoria dell'istanza come la somma di quanto un degli utilizzi da parte del processo dell'applicazione e il numero di file delle applicazioni memorizzati in modo dinamico nella cache in memoria. Per evitare che le applicazioni che usano molta memoria utilizzino l'istanza arresti anomali dovuti al superamento dei limiti di memoria, esegui l'upgrade a una versione classe dell'istanza con più memoria.
Differenze di utilizzo della CPU
I runtime di seconda generazione possono mostrare una linea di base più elevata dell'utilizzo della CPU al primo avvio dell'istanza. A seconda della configurazione della scalabilità di un'applicazione, questo potrebbe avere effetti collaterali indesiderati, ad esempio un numero di istanze superiore a quello previsto se un'applicazione è configurata per la scalabilità in base all'utilizzo della CPU. Per evitare questo problema, esamina e testa le configurazioni di scalabilità dell'applicazione per assicurarti che il numero di istanze sia accettabile.
Differenze nell'intestazione della richiesta
I runtime di prima generazione consentono di inoltrare all'applicazione le intestazioni di richiesta con trattini bassi
(ad es. X-Test-Foo_bar
). Di seconda generazione
introduce Nginx nell'architettura host. Per effetto di ciò,
modifica, i runtime di seconda generazione sono configurati per rimuovere automaticamente
intestazioni con trattini bassi (_
). Per evitare problemi con l'applicazione, evita di utilizzare
trattini bassi nelle intestazioni delle richieste dell'applicazione.
Migrazione del file app.yaml
in corso...
Devi inserire un controller frontale per gestire tutto il routing nella tua applicazione. Per ulteriori informazioni, vedi Avvio dell'applicazione.
I runtime PHP di seconda generazione non consentono l'utilizzo dell'elemento gestore script
personalizzati. L'unico valore valido è auto
, perché tutto il traffico viene pubblicato utilizzando il comando entrypoint. Tutti i gestori di URL non statici devono includere script: auto
per eseguire il deployment correttamente.
Il comportamento di alcuni elementi del file di configurazione app.yaml
è stato
modificato:
Elemento | Tipo di modifica | Descrizione |
---|---|---|
entrypoint | Aggiunta | Facoltativamente, utilizza questo campo per specificare il comando che verrà eseguito all'avvio dell'app. |
threadsafe | Ritirato | Tutti si presuppone che le applicazioni siano threadsafe, ovvero che un'istanza possa più richieste contemporaneamente. |
api_version | Ritirato | In precedenza obbligatoria, ma non necessaria nei runtime PHP di seconda generazione. |
application_readable | Ritirato | |
builtins | Ritirato | |
libraries | Ritirato | Terzo arbitrario
puoi installare dipendenze di terze parti utilizzando un composer.json
dei metadati. |
handlers | Modificato |
|
Se utilizzi uno dei campi ritirati, si verificherà un errore nell'app e deployment continuo.
Per ulteriori informazioni, consulta la sezione di riferimento app.yaml
.
Restrizioni di runtime ridotte
I runtime PHP di seconda generazione hanno meno restrizioni rispetto al runtime PHP 5.5.
- Installa le dipendenze di terze parti.
- Il runtime include un file system completo.
- Creare thread o processi in background che vanno oltre l'ambito della richiesta durante l'esecuzione dell'istanza.
- Utilizza la libreria client Google Cloud per PHP per integrare le app con altri servizi Google Cloud. Per ulteriori informazioni, consulta la pagina Installazione della libreria client Google Cloud.
Per ulteriori informazioni, consulta l'ambiente di runtime PHP.
Esegui la migrazione dall'SDK PHP di App Engine
Per ridurre lo sforzo e la complessità della migrazione del runtime, l'ambiente standard App Engine ti consente di accedere a molti API e servizi in bundle legacy nel runtime PHP di seconda generazione, come Memcache. La tua app PHP di seconda generazione può chiamare le API dei servizi in bundle tramite la SDK di App Engine e accedere alla maggior parte delle funzionalità Runtime PHP 5. Non tutti i servizi in bundle legacy disponibili per PHP 5 hanno un servizio corrispondente nei runtime PHP di seconda generazione. Per l'elenco completo delle API dei servizi in bundle legacy disponibili per i runtime PHP di seconda generazione, consulta la documentazione dei riferimenti alle API dei servizi in bundle legacy.
Hai anche la possibilità di utilizzare i prodotti Google Cloud che offrono con funzionalità simili a quelle dei servizi in bundle legacy. Questi prodotti Google Cloud forniscono una libreria client Google Cloud CLI idiomatica. Per i servizi in bundle precedenti che non sono disponibili come prodotti separati in Google Cloud, come la ricerca, puoi utilizzare provider di terze parti soluzioni alternative. Per scoprire di più sulla migrazione ai servizi slegati, consulta Eseguire la migrazione dai servizi in bundle.
Eseguire l'applicazione in locale
Per testare l'applicazione ed eseguirla localmente:
Installa localmente una versione di PHP che corrisponde a un runtime PHP di seconda generazione disponibili nell'ambiente standard di App Engine.
Installa un server web e utilizzalo per pubblicare la tua app localmente.
Ad esempio, avvia il server HTTP eseguendo questo comando:
php -S localhost:8080
Dopodiché, visualizza la tua applicazione nel browser web all'indirizzo http://localhost:8080.