Оригинал руководства. http://docs.guzzlephp.org/en/latest/

Guzzle является клиентом PHP HTTP, который позволяет легко отправлять HTTP-запросы и просто производить для интеграцию с веб-сервисами.

  • Простой интерфейс для построения строки запроса, POST запросы, потоковой загрузки больших, потокового скачивания больших файлов, используя HTTP-куки, загрузки данных в формате JSON, и т.д. ...
  • Может посылать как синхронные и асинхронные запросы, используя один и тот же интерфейс.
  • Использование PSR-7 интерфейсов для запросов, ответов и потоков. Это позволяет использовать другие PSR-7 совместимые библиотеки с Guzzle.
  • Абстрагируется от базового HTTP протокола, что позволяет писать код независимый от окружения среды и протоколов ; т.е. без жесткой зависимости от cURL, PHP потоков, сокетов, или неблокирующие циклы событий.
  • Система Middleware позволяет увеличивать и создавать поведение клиента.
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.github.com/user', [
    'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'

// Отправть асинхронный запрос.
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
    echo 'I completed! ' . $response->getBody();
});
$promise->wait();

Руководство пользователя