symfony 5.2 как принудительно использовать amphp-клиент, даже если у вас установлен libcurl

#symfony

#symfony

Вопрос:

Теперь Symfony поддерживает amphp http client (docs), если установлен amphp http client, но даже если он установлен, но вы также libcurl установили, он использует curl-клиент, но мне нужен amphp.

Я попытался переопределить конфигурацию следующим services.yml образом:

     SymfonyComponentHttpClientAmpHttpClient:
        class: SymfonyComponentHttpClientAmpHttpClient
        arguments:
            - []
            - !abstract 'max host connections'
        calls:
            - setLogger: [ '@logger' ]
        tags:
            - { name : 'monolog.logger', channel : 'http_client'}
            - { name : 'http_client.client' }

    SymfonyContractsHttpClientHttpClientInterface: '@SymfonyComponentHttpClientAmpHttpClient'
 

но это не работает, когда я внедряю HttpClientInterface Symfony, все еще разрешая его как CurlHttpClient

Есть идеи о том, как я могу заставить Symfony использовать amphp-клиент? заранее спасибо!

Комментарии:

1. Что вы пробовали до сих пор? Есть ли что-нибудь неясное в документации по адресу symfony.com/doc/current/http_client.html#enabling-curl-support ?

Ответ №1:

Проверьте этот класс: SymfonyComponentHttpClientHttpClient . Его метод create принимает решение о том, какой класс будет создан и возвращен.

Единственный способ, которым этот метод вернет AmpHttpClient значение intance, — это если расширение CURL не загружено.

С помощью ini_set() вы можете выбрать, какое расширение будет загружаться (я не уверен).

Полиция. Вы можете использовать библиотеку AMPHP как автономную, посетите https://amphp.org/http-client /