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 use y se integre la biblioteca.
La mayoría de estas prácticas recomendadas se aplican a todos los idiomas. En esta guía, se explican los que son específicos de PHP.
Implementación de Protobuf
Protobuf se usa en gRPC y en la API de Google Ads para los mensajes de solicitud y respuesta. Hay dos implementaciones disponibles, aunque la escrita en C tiene un mejor rendimiento.
Para obtener más información, consulta la guía de Protobuf.
Modo de operación del intérprete de PHP
PHP es un lenguaje de secuencias de comandos versátil que tiene muchos modos de operación según el uso. La CGI (interfaz de puerta de enlace común) de PHP tiene una ventaja notable porque puede compartir recursos entre ejecuciones.
Versión de PHP
Es una buena práctica actualizar regularmente a una versión de PHP más reciente, ya que suele tener un mejor rendimiento general. Lista de versiones de PHP compatibles
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 compatible con la biblioteca cliente, hay paquetes específicos para la versión.
Los paquetes dedicados a las versiones de la API de Google Ads que no se usan se pueden quitar de forma segura de la biblioteca cliente. Dado que puede ser útil para acelerar la ejecución o reducir el espacio de memoria, la biblioteca cliente proporciona utilidades para hacerlo de forma programática.
Ejemplo
Supongamos que implementas la biblioteca cliente que usa solo la versión de API más reciente: v21
, y deseas quitar la compatibilidad con las versiones de API no utilizadas: v20
y v19
.
En el archivo composer.json
del proyecto, define un script de Composer (llamado remove-google-ads-api-version-support
) que aproveche la utilidad proporcionada por la biblioteca cliente, en la clase ApiVersionSupport
:
"scripts": {
"remove-google-ads-api-version-support": [
"Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
]
}
Luego, usa el script de Composer con los números de versión como parámetros y muestra 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 v19 and v20 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 19 20
# 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 del tamaño del archivo de 50 M y que la única versión compatible restante es V21
:
# Supported Google Ads API versions:
V19
V20
V21
# Vendor folder size:
110M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 19 of Google Ads API...
Done
Removing support for the version 20 of Google Ads API...
Done
# Supported Google Ads API versions:
V21
# Vendor folder size:
60M ./vendor
Comparación entre el desarrollo y la 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, lo contrario es cierto 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 porque mejora el rendimiento y aumenta la estabilidad, ya que almacena instrucciones de secuencias de comandos precompiladas.
OPcache es la solución más utilizada y está disponible de forma predeterminada.
Carga automática
Autoload es común porque mejora el rendimiento y aumenta la estabilidad, ya que carga información precompilada sobre las clases.
La biblioteca cliente de PHP cumple con PSR-4 para la carga automática y proporciona la definición como parte del archivo composer.json
. Luego, se pueden usar de inmediato las opciones dedicadas de Composer, como --optimize-autoloader
o --classmap-authoritative
, por ejemplo.
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.
Para obtener más información, consulta la guía de registro.
Depuración y generación de perfiles
Te recomendamos que inhabilite las herramientas de depuración y de generación de perfiles, ya que suelen generar una sobrecarga en el 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 función, 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 mejora del rendimiento es muy específica para un proyecto y una ejecución determinados.