Клиентская библиотека PHP упрощает взаимодействие с Google Ads API и требует минимальной настройки. Однако эффективность в значительной степени зависит от того, как библиотека используется и интегрируется.
Большинство общих рекомендаций применимы ко всем языкам. В этом руководстве рассказывается об оптимизации производительности для PHP.
Реализации Protobuf и gRPC
Protobuf используется в gRPC и Google Ads API для сообщений запросов и ответов. Доступны две реализации (на чистом PHP и расширение C), и расширения C для protobuf и grpc обеспечивают значительно более высокую производительность сериализации и сети.
Подробную информацию можно найти в руководстве по Protobuf и руководстве по транспорту.
Режим работы интерпретатора PHP
PHP – это универсальный скриптовый язык, который имеет несколько режимов работы в зависимости от использования. PHP-FPM (FastCGI Process Manager) или постоянные серверы приложений имеют значительное преимущество перед стандартным CGI, поскольку постоянные рабочие процессы могут повторно использовать кешированный байт-код (через OPcache) и ресурсы в разных запросах.
Версия PHP
Регулярно обновляйте PHP, чтобы повысить производительность среды выполнения. Ознакомьтесь со списком поддерживаемых версий PHP.
Неиспользуемые версии Google Ads API
Все версии клиентской библиотеки поддерживают несколько версий Google Ads API. Для каждой версии Google Ads API, поддерживаемой клиентской библиотекой, существуют специальные пакеты.
Пакеты, предназначенные для версий Google Ads API, которые не используются вашим приложением, можно безопасно удалить из клиентской библиотеки. Чтобы уменьшить объем потребляемой памяти и ускорить выполнение, в клиентской библиотеке есть утилита, которая позволяет программно удалять неиспользуемые версии API.
Пример
Предположим, что вы разрабатываете клиентское приложение, которое использует только последнюю версию API (v26), и хотите удалить поддержку неиспользуемых версий API (v23, v24 и v25).
В файле 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 unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
-maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor
# Use the Composer script to remove the unused versions
# v23, v24, and
# v25 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
23 \
24 \
25
# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
-maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor
В следующем примере показано, как уменьшается размер файла, если поддерживается только версия V26:
# Supported Google Ads API versions:
V23
V24
V25
V26
# Vendor folder size:
135M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 23 of Google Ads API...
Done
Removing support for the version 24 of Google Ads API...
Done
Removing support for the version 25 of Google Ads API...
Done
# Supported Google Ads API versions:
V26
# Vendor folder size:
60M ./vendor
Разработка и производство
PHP – это интерпретируемый язык, который компилирует инструкции перед их выполнением. Это удобно при разработке, когда исходные файлы часто меняются и время выполнения не так важно. В производственной среде стабильность и производительность становятся основными проблемами.
Кеш
Кэширование рекомендуется, поскольку оно повышает производительность и стабильность за счет хранения предварительно скомпилированного байт-кода скрипта в общей памяти.
OPcache – стандартное решение, которое по умолчанию поставляется вместе с PHP.
Автоплатеж
Автоматическая загрузка повышает производительность и стабильность за счет загрузки предварительно скомпилированной информации о карте классов.
Клиентская библиотека PHP соответствует стандарту PSR-4 для автозагрузки и предоставляет определение в составе файла composer.json. Специальные параметры CLI Composer, такие как --optimize-autoloader или --classmap-authoritative, можно использовать в рабочих сборках без дополнительной настройки.
Журналы
Установка более высокого порогового значения для регистраторов, например ERROR или WARNING, в рабочей среде помогает снизить нагрузку на систему I/O и потребление памяти.
Подробнее о ведении журналов…
Отладка и профилирование
Отключите расширения отладчика и профилировщика (например, Xdebug) в рабочей среде, поскольку они создают значительную нагрузку на систему.
Предварительная загрузка
Начиная с версии PHP 7.4, можно использовать предзагрузку OPcache, чтобы загружать скрипты в память при запуске сервера. Это позволяет ускорить работу по сравнению со стандартным кешированием OPcache.
Скрипт предварительной загрузки должен быть разработан специально для вашего приложения. Клиентская библиотека PHP не предоставляет универсальный скрипт предварительной загрузки, поскольку баланс между использованием памяти и повышением производительности зависит от проекта и среды развертывания.