Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keepalive #13

Open
thekid opened this issue Dec 2, 2015 · 6 comments
Open

Keepalive #13

thekid opened this issue Dec 2, 2015 · 6 comments

Comments

@thekid
Copy link
Member Author

thekid commented Dec 2, 2015

💡 Idea no. 1

$conn= new HttpConnection(...);
$conn->useKeepAlive();  // Use default strategy
$conn->useKeepAlive(newinstance(KeepAlive::class, [], [
  'timeout' => function($request, $response) {
    if ('example.com' === $request->url->getHost()) {
      return 0.0;   // Close immediately
    } else {
      return 30.0;  // Keep open for 30.0 seconds
    }
  }
]));

@thekid
Copy link
Member Author

thekid commented Dec 2, 2015

💡 Idea no. 2

$conn= new HttpConnection(...);
$conn->usingKeepAlive(function() {
  $r1= $conn->get(...);
  $r1->abort();  // Do not process content until end

  $r2= $conn->post(...);
  Streams::readAll($r2->in());
});

@thekid
Copy link
Member Author

thekid commented Dec 2, 2015

💡 Idea no. 3

$conn= new HttpConnection(...);
$req= $conn->create(new HttpRequest())->keepAlive();
$req= $conn->create(new HttpRequest())->keepAlive(newinstance(KeepAlive::class, [], [
  // See idea #1 above
])));
$res= $conn->send($req);

@thekid
Copy link
Member Author

thekid commented Dec 2, 2015

💡 Idea no. 4

$conn= new HttpConnection(...);
$conn->get(..., function($res) {
  $res->abort();

  // or: Streams::readAll($res->in());
});

@thekid
Copy link
Member Author

thekid commented Dec 2, 2015

💡 Idea no. 5

$conn= new HttpConnection(...);
$pool= $conn->pool(5);
$pool->get()->then(function($res) {
  // Uses first socket
});
$pool->post()->then(function($res) {
  // Uses first *free* socket within the pool
});

@thekid
Copy link
Member Author

thekid commented Oct 3, 2017

See #22 - this is now implemented by passing Connection: keep-alive to requests. Sockets are reused when all data from a previous response has been consumed, except if the server issues a Connection: close.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant