En esta página se explica cómo migrar de los entornos de ejecución de PHP de primera generación a los de segunda generación. Para actualizar tu aplicación de segunda generación a la última versión compatible de PHP, consulta el artículo Actualizar una aplicación.
PHP 5 llegó al final del ciclo de asistencia el 30 de enero del 2024. Tus aplicaciones PHP 5 seguirán ejecutándose y recibiendo tráfico. Sin embargo, App Engine puede bloquear el nuevo despliegue de aplicaciones que usen tiempos de ejecución después de la fecha de finalización de su asistencia. Te recomendamos que migres al entorno de ejecución de PHP más reciente compatible siguiendo las directrices de esta página.
Si migras a un tiempo de ejecución de PHP de segunda generación compatible, podrás usar funciones de lenguaje actualizadas y crear aplicaciones más portátiles con código idiomático.
Problemas de compatibilidad entre PHP 5.5 y los entornos de ejecución de PHP de segunda generación
En la documentación oficial de PHP se proporciona información sobre cómo migrar desde diferentes versiones de PHP:
- Migrar de PHP 5.5.x a PHP 5.6.x
- Migrar de PHP 5.6.x a PHP 7.0.x
- Migrar de PHP 7.0.x a PHP 7.1.x
- Migrar de PHP 7.1.x a PHP 7.2.x
- Migrar de PHP 7.2.x a PHP 7.3.x
- Migrar de PHP 7.3.x a PHP 7.4.x
- Migrar de PHP 7.4.x a PHP 8.0.x
- Migrar de PHP 8.0.x a PHP 8.1.x
Diferencias clave entre PHP 5.5 y los entornos de ejecución de PHP de segunda generación
A continuación, se resumen las diferencias entre PHP 5.5 y los entornos de ejecución de PHP de segunda generación en el entorno estándar de App Engine:
Diferencias en el uso de memoria
Los tiempos de ejecución de segunda generación tienen un uso de memoria de referencia más alto que los de primera generación. Esto se debe a varios factores, como las diferentes versiones de la imagen base y las diferencias en la forma en que las dos generaciones calculan el uso de memoria.
Los tiempos de ejecución de segunda generación calculan el uso de memoria de las instancias como la suma de lo que usa un proceso de aplicación y el número de archivos de aplicación almacenados dinámicamente en caché en la memoria. Para evitar que las aplicaciones que consumen mucha memoria experimenten cierres de instancias debido a que superan los límites de memoria, cambia a una clase de instancia más grande con más memoria.
Diferencias en el uso de la CPU
Los tiempos de ejecución de segunda generación pueden experimentar un aumento del uso de la CPU al iniciar una instancia por primera vez. En función de la configuración de escalado de una aplicación, esto puede tener efectos secundarios no deseados, como un número de instancias superior al previsto si una aplicación está configurada para escalarse en función de la utilización de la CPU. Para evitar este problema, revisa y prueba las configuraciones de escalado de la aplicación para asegurarte de que el número de instancias sea aceptable.
Diferencias en los encabezados de solicitud
Los tiempos de ejecución de primera generación permiten que los encabezados de solicitud con guiones bajos (por ejemplo, X-Test-Foo_bar
) se reenvíen a la aplicación. Los runtimes de segunda generación
introducen Nginx en la arquitectura del host. Como resultado de este cambio, los tiempos de ejecución de segunda generación se configuran para eliminar automáticamente los encabezados con guiones bajos (_
). Para evitar problemas con las aplicaciones, no utilices guiones bajos en los encabezados de las solicitudes de las aplicaciones.
Migrar su archivo app.yaml
Debes colocar un controlador frontal para gestionar todo el enrutamiento de tu aplicación. Para obtener más información, consulta Inicio de la aplicación.
Los tiempos de ejecución de PHP de segunda generación no permiten personalizar el elemento de controlador script
. El único valor válido es auto
, ya que todo el tráfico se sirve mediante el comando entrypoint. Todos los controladores de URLs no estáticos deben incluir script: auto
para que la implementación se realice correctamente.
Se ha modificado el comportamiento de algunos elementos del archivo de configuración app.yaml
:
Elemento | Tipo de cambio | Descripción |
---|---|---|
entrypoint | Añadido | Opcionalmente, usa este campo para especificar el comando que se ejecutará cuando se inicie tu aplicación. |
threadsafe | Obsoleto | Se presupone que todas las aplicaciones son seguras para subprocesos, lo que significa que una instancia puede gestionar varias solicitudes al mismo tiempo. |
api_version | Obsoleto | Anteriormente obligatorio, pero no necesario en los tiempos de ejecución de PHP de segunda generación. |
application_readable | Obsoleto | |
builtins | Obsoleto | |
libraries | Obsoleto | Se pueden instalar dependencias de terceros arbitrarias mediante un archivo de metadatos composer.json . |
handlers | Última modificación |
|
Si usas alguno de los campos obsoletos, se producirá un error al implementar la aplicación.
Para obtener más información, consulta la referencia de app.yaml
.
Restricciones de tiempo de ejecución reducidas
Los tiempos de ejecución de PHP de segunda generación tienen menos restricciones que el tiempo de ejecución de PHP 5.5.
- Instala las dependencias de terceros.
- El tiempo de ejecución incluye un sistema de archivos completo.
- Crea procesos o subprocesos en segundo plano que se ejecuten más allá del ámbito de la solicitud mientras la instancia esté en funcionamiento.
- Usa la biblioteca de cliente de Google Cloud para PHP para integrar aplicaciones con otros servicios de Google Cloud . Para obtener más información, consulta la página Instalar la biblioteca de cliente de Google Cloud.
Para obtener más información, consulta el entorno de ejecución de PHP.
Migrar desde el SDK de PHP de App Engine
Para reducir el esfuerzo y la complejidad de la migración del tiempo de ejecución, el entorno estándar de App Engine te permite acceder a muchos de los servicios y APIs antiguos incluidos en el tiempo de ejecución de PHP de segunda generación, como Memcache. Tu aplicación PHP de segunda generación puede llamar a las APIs de los servicios incluidos a través del SDK de App Engine y acceder a la mayoría de las mismas funciones que en el tiempo de ejecución de PHP 5. No todos los servicios antiguos incluidos disponibles para PHP 5 tienen un servicio correspondiente en los entornos de ejecución de PHP de segunda generación. Para ver la lista completa de APIs de servicios empaquetados antiguos disponibles para los tiempos de ejecución de PHP de segunda generación, consulta la documentación de referencia de las APIs de servicios empaquetados antiguos.
También puedes usar Google Cloud productos que ofrecen funciones similares a los servicios antiguos incluidos. Estos productos Google Cloud proporcionan una biblioteca de cliente de Google Cloud CLI idiomática. En el caso de los servicios antiguos incluidos en paquetes que no están disponibles como productos independientes en Google Cloud, como la búsqueda, puedes usar proveedores externos u otras soluciones alternativas. Para obtener más información sobre cómo migrar a servicios independientes, consulta el artículo Migrar de servicios agrupados.
Ejecutar una aplicación de forma local
Para probar tu aplicación y ejecutarla de forma local, sigue estos pasos:
Instala localmente una versión de PHP que corresponda a un entorno de ejecución de PHP de segunda generación disponible en el entorno estándar de App Engine.
Instala un servidor web y úsalo para servir tu aplicación de forma local.
Por ejemplo, inicia el servidor HTTP ejecutando el siguiente comando:
php -S localhost:8080
A continuación, ve a http://localhost:8080 en tu navegador web para ver la aplicación.