Как Guzzle отправляет асинхронные веб-запросы?

cURL это синхронно. Итак, как библиотеки любят жрать отправлять асинхронные веб-запросы?

2 ответов


одним из жратьтранспорт обработчики CurlMultiHandler который использует PHP curl_multi_* функции, которые допускают асинхронные передачи.

запросы запускаются асинхронно и функция curl_multi_select() позволяет Guzzle ждать, пока один из запросов curl не получит данные и не обработает их.


на Жрать CurlMultiHander обертывания PHP встроенный curl_multi_* функция, которая по существу обернуть cURL Multi API

из документов cURL:

чтобы использовать мультиинтерфейс, необходимо сначала создать "мульти дескриптор" с помощью curl_multi_init. Этот дескриптор затем используется в качестве входных данных для всех дальнейших функций curl_multi_*.

с multi ручкой и multi интерфейсом вы можете сделать несколько одновременные переводы параллельно. Каждая передача построена вокруг простой ручкой. Вы создаете все простые ручки, которые вам нужны, и настраиваете соответствующие параметры для каждой простой ручки с помощью curl_easy_setopt.