Реализации Protobuf

Для PHP доступны две реализации Protobuf:

  1. C : Использует расширение Protobuf для PHP на языке C , обеспечивающее значительно лучшую производительность во время выполнения.
  2. PHP : Использует пакет PHP google/protobuf , который не требует дополнительных системных расширений.

По возможности используйте реализацию на языке C, хотя чистая реализация на PHP может быть использована, если ограничения безопасности или среды не позволяют установить расширения на языке C.

Реализация на PHP автоматически устанавливается в Composer как зависимость googleapis/gax-php и используется во время выполнения только в том случае, если реализация на C не установлена ​​и не включена.

Реализация на языке C

Для установки и настройки расширения Protobuf для PHP на языке C:

  1. Установите расширение с помощью PECL:

    sudo pecl install protobuf
    
  2. Включите расширение в активном файле php.ini (как для среды командной строки, так и для веб-сервера, например, PHP-FPM или Apache; для поиска файла конфигурации командной строки выполните команду php --ini ):

    extension=protobuf.so
    

Реализация на PHP

Для использования реализации на чистом PHP убедитесь, что реализация на C отключена и установлены все зависимости googleapis/gax-php :

  1. Закомментируйте или удалите любую строку extension=protobuf.so (или extension=php_protobuf.dll ) в ваших файлах php.ini .
  2. Выполните composer install из каталога, содержащего файл ` composer.json вашего проекта. В файле composer.json необходимо указать зависимость googleads/google-ads-php .

Определите, какая реализация используется.

Выполните следующую команду в терминале, чтобы проверить, включено ли расширение C в вашей среде командной строки PHP:

php -i | grep protobuf
  • Если вывод не пустой (например, protobuf support => enabled "), значит, вы используете реализацию на языке C.
  • В противном случае вы не используете реализацию на языке C, и библиотека Google Ads API для PHP автоматически переключается на чистую реализацию PHP, установленную Composer.