Rendimiento

La biblioteca cliente de PHP facilita las interacciones con la API de Google Ads con una configuración mínima de tu parte. Sin embargo, el rendimiento depende en gran medida de cómo se usa y se integra la biblioteca.

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

Implementación de protobuf

gRPC y la API de Google Ads usan Protobuf para los mensajes de solicitud y respuesta. Hay dos implementaciones disponibles, aunque la que está escrita en C tiene 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 un lenguaje de secuencias de comandos versátil y tiene muchos modos de operación según el uso. PHP (interfaz de puerta de enlace común) tiene una ventaja notable porque puede compartir recursos entre ejecuciones.

Versión de PHP

Se recomienda actualizar con regularidad a una versión de PHP más reciente, ya que suele tener un mejor rendimiento general. Lista de versiones compatibles de PHP.

Versiones de la API de Google Ads sin utilizar

Todas las versiones de la biblioteca cliente son compatibles con varias versiones de la API de Google Ads. Para cada versión de la API de Google Ads compatible con la biblioteca cliente, existen paquetes exclusivos para la versión.

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

Ejemplo

Supongamos que implementas la biblioteca cliente que usa solo la versión más reciente de la API: v16 y que deseas quitar la compatibilidad con las versiones de API no utilizadas: v15 y v14.

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 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 v14 and v15 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 14 15

# 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 resultado de la ejecución de muestra que aparece a continuación indica una reducción de tamaño de archivo de 50 M y la única versión compatible que queda es V16:

# Supported Google Ads API versions:
V14
V15
V16
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 14 of Google Ads API...
Done
Removing support for the version 15 of Google Ads API...
Done
# Supported Google Ads API versions:
V16
# Vendor folder size:
60M     ./vendor

Desarrollo frente a producción

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

Caché

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

OPcache es la solución más usada y está disponible de forma predeterminada.

Carga automática

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

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

Logging

Configurar los registradores en un nivel alto, como ERROR, puede ayudar a reducir la sobrecarga del tiempo de ejecución y el consumo de memoria.

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

Depuración y generación de perfiles

Te recomendamos inhabilitar las herramientas del depurador y del generador de perfiles, ya que, por lo general, suponen cierta sobrecarga de tiempo de ejecución.

Precargar

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

Se debe diseñar una secuencia de comandos para aprovechar esta característica, pero la biblioteca cliente de PHP no lo hace, ya que no hay una forma genérica de implementar la precarga de OPcache y la compensación entre el uso de memoria y la ganancia de rendimiento es muy específica para un proyecto y una ejecución determinados.