Rendimiento

La biblioteca cliente de PHP facilita las interacciones con la API de Google Ads con un mínimo configuración por tu parte. Sin embargo, el rendimiento depende en gran medida de cómo biblioteca de Kubernetes.

La mayoría de estas prácticas recomendadas se aplican a todos los idiomas. En esta guía, se analizan los que son específicos de PHP.

Implementación de Protobuf

gRPC usa Protobuf. y la API de Google Ads para los mensajes de solicitud y respuesta. Hay dos implementaciones disponibles, aunque la que está escrita en C tiene el mejor rendimiento.

Consulta la guía de Protobuf para obtener más información.

Modo de operación del intérprete de PHP

PHP es una plataforma de secuencias de comandos lenguaje y tiene muchas operaciones modos según el uso. El CGI de PHP (interfaz de puerta de enlace común) tiene una ventaja notable porque puede compartir recursos entre ejecuciones.

Versión de PHP

Es recomendable actualizar periódicamente a una versión más reciente de PHP, ya que suele brindar un mejor rendimiento general. Lista de PHP compatible versiones.

Versiones de la API de Google Ads que no se usan

Todas las versiones de la biblioteca cliente admiten varias versiones de la API de Google Ads. Para cada versión de la API de Google Ads que admite la biblioteca cliente, hay paquetes exclusivos para la versión.

Los paquetes dedicados a las versiones de la API de Google Ads que no se utilizan se pueden de la biblioteca cliente. Debido a que puede ser útil acelerar la ejecución o reducir el espacio en memoria, la biblioteca cliente proporciona utilidades para hacerlo de manera programática.

Ejemplo

Supongamos que implementas la biblioteca cliente que solo usa la versión más reciente de la API: v18, y quieres quitar la compatibilidad con las versiones de la API que no se usan: v17 y v16.

En el archivo composer.json del proyecto, define una secuencia de comandos de Composer (llamada remove-google-ads-api-version-support) que aproveche la utilidad que proporciona la biblioteca del cliente, en la clase ApiVersionSupport:

"scripts": {
  "remove-google-ads-api-version-support": [
    "Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
  ]
}

Luego, usa la secuencia de comandos de Composer con los números de versión como parámetros y, luego, imprime algunos mensajes de estado:

# Change the current directory to the project directory.
cd /path/to/the/project

# Install the project.
composer install

# Output the vendor folder size and the list of Google Ads API versions that are
# supported before removing support for Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* -maxdepth 0 | grep -o '..$'
echo "# Vendor folder size:"
du -sh ./vendor

# Use the Composer script to remove the unused versions v16 and v17 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 16 17

# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* -maxdepth 0 | grep -o '..$'
echo "# Vendor folder size:"
du -sh ./vendor

El siguiente resultado de ejecución de ejemplo indica una reducción de tamaño de archivo de 50 M, y la única versión compatible que queda es V18:

# Supported Google Ads API versions:
V16
V17
V18
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 16 of Google Ads API...
Done
Removing support for the version 17 of Google Ads API...
Done
# Supported Google Ads API versions:
V18
# Vendor folder size:
60M     ./vendor

Comparación entre desarrollo y producción

PHP es un lenguaje interpretado, ya que primero compila las instrucciones antes de ejecutarlas. Esto suele ser ventajoso, ya que, durante el tiempo de desarrollo, las fuentes suelen cambiar, mientras que el tiempo de ejecución no es tan crucial. Sin embargo, ocurre lo contrario en el momento de la producción, ya que la estabilidad y el rendimiento se convierten en las principales preocupaciones.

Caché

El almacenamiento en caché es común y muy recomendable, ya que mejora el rendimiento y aumenta la estabilidad almacenando instrucciones de secuencias de comandos precompiladas.

OPcache es el archivo que se usa con mayor frecuencia y está disponible de forma predeterminada.

Carga automática

La carga automática es común porque mejora el rendimiento y aumenta la estabilidad cargando información precompilada sobre las clases.

La biblioteca cliente de PHP cumple con PSR-4 para de carga automática y brinda la definición como parte del composer.json . Las opciones dedicadas de Composer, como --optimize-autoloader o --classmap-authoritative, por ejemplo, se pueden usar de inmediato.

Logging

Establecer los registradores en un nivel alto como ERROR puede ayudar a reducir el tiempo de ejecución y el consumo de memoria.

Consulta la guía de registro para obtener más información.

Depuración y generación de perfiles

Recomendamos inhabilitar las herramientas de depurador y generador de perfiles, ya que suelen generar una sobrecarga de tiempo de ejecución.

Precargar

Desde PHP 7.4, se puede usar la carga previa de OPcache para precargar secuencias de comandos en la memoria, lo que va un paso más allá que la caché normal.

La secuencia de comandos debe diseñarse para aprovechar esta función, pero la interfaz de no lo hace la biblioteca cliente, ya que no existe una forma genérica de implementar OPcache. la precarga y la compensación entre el uso de memoria y la ganancia de rendimiento muy específicos de un proyecto y una ejecución determinados.