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