This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Fabien Potencier c459c80561 feature #37136 [HttpClient] added support for pausing responses with a new pause_handler callable exposed as an info item (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] added support for pausing responses with a new `pause_handler` callable exposed as an info item

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

This code sample will delay sending the request by 2 seconds:
```php
$response = $client->request('GET', 'https://symfony.com/');
$response->getInfo('pause_handler')(2);
```

Unlike "competing" HTTP clients written in PHP, this one works while streaming a request/response. This means this PR allows implementing delays before retries but it also enables throttling the streams while still maintaining async/multiplexing.

Returning the handler as an info item saves adding a new method and thus plays well with decorators, without requiring a new dedicated interface.

While this can be used directly, the target use case is within an async-decorator, by using [the `AsyncContext::pause()` method](https://github.com/symfony/symfony/pull/36779/files#diff-1d1f61631f4f5e84634e7c3dac6f208cR89).

As a  bonus, this PR improves `NativeHttpClient` by making it able to count the maximum number of open connections *per-host*.

Commits
-------

f3cc7c1bad [HttpClient] added support for pausing responses with a new `pause_handler` callable exposed as an info item
2020-06-09 07:26:44 +02:00
.github Merge branch '5.0' into 5.1 2020-05-25 14:33:44 +02:00
src/Symfony [HttpClient] added support for pausing responses with a new pause_handler callable exposed as an info item 2020-06-09 07:26:34 +02:00
.appveyor.yml Merge branch '5.0' 2020-04-12 11:49:11 +02:00
.editorconfig Update .editorconfig 2018-09-06 16:22:56 +02:00
.gitignore Run the phpunit-bridge from a PR 2019-08-02 17:46:19 +02:00
.php_cs.dist Merge branch '4.4' 2019-11-05 18:15:52 +01:00
.travis.yml Merge branch '5.0' into 5.1 2020-05-30 22:35:19 +02:00
CHANGELOG-4.0.md Merge branch '3.4' into 4.1 2018-08-01 18:22:14 +02:00
CHANGELOG-4.1.md updated CHANGELOG for 4.1.10 2019-01-06 17:16:07 +01:00
CHANGELOG-4.2.md updated CHANGELOG for 4.2.10 2019-06-26 16:19:37 +02:00
CHANGELOG-4.3.md updated CHANGELOG for 4.3.10 2020-01-21 14:13:32 +01:00
CHANGELOG-4.4.md updated CHANGELOG for 4.4.9 2020-05-31 07:25:41 +02:00
CHANGELOG-5.0.md Merge branch '5.0' into 5.1 2020-06-07 17:42:22 +02:00
CHANGELOG-5.1.md updated CHANGELOG for 5.1.0 2020-05-31 08:14:11 +02:00
CODE_OF_CONDUCT.md Added the Code of Conduct file 2018-10-10 03:13:30 -07:00
composer.json Merge branch '4.4' into 5.0 2020-05-23 14:58:59 +02:00
CONTRIBUTING.md Mention the community review guide 2016-12-18 22:02:35 +01:00
CONTRIBUTORS.md update CONTRIBUTORS for 3.4.41 2020-05-31 07:14:13 +02:00
LICENSE Update year in license files 2020-01-01 12:03:25 +01:00
link Add new packages on the link script 2020-03-04 17:45:35 +01:00
phpunit Remove patches for Doctrine bugs and deprecations 2020-05-08 11:45:13 +02:00
phpunit.xml.dist [Uid] minor improvements 2020-03-20 20:42:05 +01:00
README.md Improve Symfony description 2019-11-24 19:17:45 +01:00
UPGRADE-5.0.md Remove UPGRADE files for 4.x 2020-04-12 15:08:12 +02:00
UPGRADE-5.1.md Added deprecation for RememberMe services without logout() method 2020-05-16 13:05:23 +02:00
UPGRADE-5.2.md deprecate the "allowEmptyString" option 2020-05-22 15:23:49 +02:00
UPGRADE-6.0.md deprecate the "allowEmptyString" option 2020-05-22 15:23:49 +02:00

Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Symfony is used by thousands of web applications (including BlaBlaCar.com and Spotify.com) and most of the popular PHP projects (including Drupal and Magento).

Installation

Documentation

Community

Contributing

Symfony is an Open Source, community-driven project with thousands of contributors. Join them contributing code or contributing documentation.

Security Issues

If you discover a security vulnerability within Symfony, please follow our disclosure procedure.

About Us

Symfony development is sponsored by SensioLabs, led by the Symfony Core Team and supported by Symfony contributors.