Implementacje protokołu Protobuf

W przypadku PHP dostępne są 2 implementacje Protobuf:

  1. C: używa rozszerzenia Protobuf PHP C, które zapewnia znacznie lepszą wydajność środowiska wykonawczego.
  2. PHP używa pakietu PHP google/protobuf, który nie wymaga dodatkowych rozszerzeń systemowych.

Jeśli to możliwe, używaj implementacji w języku C, ale możesz też używać implementacji w czystym PHP, gdy ograniczenia związane z bezpieczeństwem lub środowiskiem uniemożliwiają instalowanie rozszerzeń w języku C.

Implementacja PHP jest automatycznie instalowana jako zależność googleapis/gax-php w Composerze i jest używana w czasie działania tylko wtedy, gdy implementacja C nie jest zainstalowana i włączona.

Implementacja w języku C

Aby zainstalować i skonfigurować rozszerzenie Protobuf PHP C:

  1. Zainstaluj rozszerzenie za pomocą PECL:

    sudo pecl install protobuf
    
  2. Włącz rozszerzenie w aktywnym pliku php.ini (zarówno w środowisku interfejsu wiersza poleceń, jak i serwera WWW, np. PHP-FPM lub Apache; uruchom php --ini, aby znaleźć plik konfiguracji interfejsu wiersza poleceń):

    extension=protobuf.so
    

Implementacja w PHP

Aby używać czystej implementacji PHP, upewnij się, że implementacja C jest wyłączona i że zainstalowane są wszystkie zależności googleapis/gax-php:

  1. Zmień w komentarz lub usuń wszystkie wiersze extension=protobuf.so (lub extension=php_protobuf.dll) w plikach php.ini.
  2. Uruchom composer install z katalogu zawierającego plik composer.json projektu. Plik composer.json powinien określać googleads/google-ads-php jako zależność.

Określanie używanej implementacji

Aby sprawdzić, czy rozszerzenie C jest włączone w środowisku interfejsu wiersza poleceń PHP, uruchom w terminalu to polecenie:

php -i | grep protobuf
  • Jeśli dane wyjściowe nie są puste (np. protobuf support => enabled), używasz implementacji C.
  • W przeciwnym razie nie używasz implementacji C, a biblioteka PHP interfejsu Google Ads API automatycznie powraca do czystej implementacji PHP zainstalowanej przez Composera.