Клиентская библиотека PHP упрощает взаимодействие с API Google Ads, требуя минимальной настройки с вашей стороны. Однако производительность во многом зависит от того, как используется и интегрируется библиотека.
Большинство из этих рекомендаций применимы ко всем языкам программирования. В этом руководстве рассматриваются те, которые специфичны именно для PHP.
Реализация Protobuf
Protobuf используется gRPC и API Google Ads для обмена сообщениями запроса и ответа. Доступны две реализации, хотя та, что написана на C, демонстрирует лучшую производительность.
Дополнительную информацию см. в руководстве по Protobuf .
Режим работы интерпретатора PHP
PHP — это универсальный скриптовый язык с множеством режимов работы в зависимости от задачи. PHP CGI (Common Gateway Interface) обладает существенным преимуществом, поскольку позволяет совместно использовать ресурсы между выполнениями.
версия PHP
Рекомендуется регулярно обновлять PHP до более новой версии, поскольку это обычно обеспечивает лучшую общую производительность. Список поддерживаемых версий PHP .
Неиспользуемые версии API Google Ads
Все версии клиентской библиотеки поддерживают несколько версий Google Ads API. Для каждой версии Google Ads API, поддерживаемой клиентской библиотекой, существуют отдельные пакеты.
Пакеты, предназначенные для неиспользуемых версий API Google Ads, можно безопасно удалить из клиентской библиотеки. Поскольку это может быть полезно для ускорения выполнения или уменьшения потребления памяти, клиентская библиотека предоставляет утилиты для программного выполнения этих действий.
Пример
Предположим, вы разрабатываете клиентскую библиотеку, использующую только последнюю версию API: v23 , и хотите удалить поддержку неиспользуемых версий API: v22 и v21 .
В файле composer.json проекта определите скрипт Composer (с именем remove-google-ads-api-version-support ), который использует возможности клиентской библиотеки, в классе ApiVersionSupport :
"scripts": {
"remove-google-ads-api-version-support": [
"Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
]
}
Затем используйте скрипт Composer, передав номера версий в качестве параметров, и выведите несколько сообщений о состоянии:
# 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 v21 and v22 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 21 22
# 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
Приведенный ниже пример выходных данных показывает уменьшение размера файла на 50 МБ, и единственная оставшаяся поддерживаемая версия — V23 :
# Supported Google Ads API versions:
V21
V22
V23
# Vendor folder size:
110M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 21 of Google Ads API...
Done
Removing support for the version 22 of Google Ads API...
Done
# Supported Google Ads API versions:
V23
# Vendor folder size:
60M ./vendor
Разработка против производства
PHP — это интерпретируемый язык, поскольку он сначала компилирует инструкции, а затем выполняет их. Это обычно выгодно, так как на этапе разработки исходный код часто меняется, а время выполнения не является критически важным. Однако на этапе производства ситуация обратная, поскольку основными задачами становятся стабильность и производительность.
Кэш
Кэширование — распространенная и настоятельно рекомендуемая технология, поскольку она не только повышает производительность, но и увеличивает стабильность за счет хранения предварительно скомпилированных инструкций скрипта.
OPcache — наиболее распространенное решение, доступное по умолчанию.
Автозагрузка
Автозагрузка широко распространена, поскольку она не только повышает производительность, но и увеличивает стабильность за счет загрузки предварительно скомпилированной информации о классах.
Клиентская библиотека PHP соответствует стандарту PSR-4 для автозагрузки и предоставляет определение в файле composer.json . Специальные параметры Composer , такие как --optimize-autoloader или --classmap-authoritative , можно использовать сразу же.
Ведение журнала
Установка высокого уровня логирования, например, ERROR может помочь снизить накладные расходы на время выполнения и потребление памяти.
Дополнительную информацию см. в руководстве по ведению журнала .
Отладка и профилирование
Мы рекомендуем отключить инструменты отладки и профилирования, поскольку они обычно приводят к некоторому увеличению времени выполнения.
Предварительная загрузка
Начиная с PHP 7.4, предварительная загрузка OPcache позволяет предварительно загружать скрипты в память, что на шаг дальше обычного кэширования.
Для использования этой функции необходимо разработать скрипт, но в клиентской библиотеке PHP это не предусмотрено, поскольку нет универсального способа реализации предварительной загрузки OPcache, а компромисс между использованием памяти и повышением производительности сильно зависит от конкретного проекта и способа выполнения.