cURL
jest synchroniczna. Jak więc biblioteki takie jak Guzzle wysyłają asynchroniczne żądania sieciowe?W jaki sposób Guzzle wysyła asynchroniczne żądania sieciowe?
Odpowiedz
Jednym z obsługą transportowych Guzzle „s jest CurlMultiHandler
który używa PHP curl_multi_*
funkcje, które pozwala na transfery asynchronicznych.
Żądania są uruchamiane asynchronicznie, a funkcja curl_multi_select()
pozwala Guzzle
czekać, aż jedno z żądań curl otrzyma dane i przetworzy je.
Guzzle CurlMultiHander owija wbudowanego curl_multi_* funkcji PHP, które zasadniczo zawinąć się cURL Multi API
z dokumentów Zwijanie:
Aby korzystać z wielu interfejs, trzeba najpierw stworzyć „wielofunkcyjny uchwyt” z curl_multi_init. Ten uchwyt jest następnie używany jako wejście do wszystkich dalszych funkcji curl_multi_ *.
Dzięki multi-uchwytowi i multi-interfejsowi można równolegle wykonywać kilka jednoczesnych transferów. Każdy pojedynczy transfer jest zbudowany wokół łatwego uchwytu. Tworzysz wszystkie potrzebne uchwyty i ustawiasz odpowiednie opcje dla każdego łatwego uchwytu za pomocą curl_easy_setopt.