Skip to content

Commit

Permalink
Improve documentation and examples
Browse files Browse the repository at this point in the history
  • Loading branch information
yadaiio committed Feb 20, 2024
1 parent bc01ce1 commit f5e9505
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 8 deletions.
28 changes: 25 additions & 3 deletions README.md
Expand Up @@ -10,7 +10,7 @@ built on top of [ReactPHP](https://reactphp.org/).
Let's say you crawl a page and find that you need to send 100 HTTP requests to
following pages which each takes `0.2s`. You can either send them all
sequentially (taking around `20s`) or you can use
[ReactPHP](https://reactphp.org) to concurrently request all your pages at the
[ReactPHP](https://reactphp.org/) to concurrently request all your pages at the
same time. This works perfectly fine for a small number of operations, but
sending an excessive number of requests can either take up all resources on your
side or may get you banned by the remote side as it sees an unreasonable number
Expand Down Expand Up @@ -84,12 +84,14 @@ $q = new Clue\React\Mq\Queue(3, null, function ($url) use ($browser) {
foreach ($urls as $url) {
$q($url)->then(function (Psr\Http\Message\ResponseInterface $response) use ($url) {
echo $url . ': ' . $response->getBody()->getSize() . ' bytes' . PHP_EOL;
});
}, function (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
} );
}

```

See also the [examples](examples).
See also the [examples](examples/).

## Usage

Expand Down Expand Up @@ -196,6 +198,10 @@ interface that makes it easy to react to when an operation is completed (i.e.
either successfully fulfilled or rejected with an error):

```php
<?php

require __DIR__ . '/vendor/autoload.php';

$promise->then(
function ($result) {
var_dump('Result received', $result);
Expand Down Expand Up @@ -284,6 +290,10 @@ schedule all jobs while limiting concurrency to ensure no more than
resolves with the results of all jobs on success.

```php
<?php

require __DIR__ . '/vendor/autoload.php';

$browser = new React\Http\Browser();

$promise = Queue::all(3, $urls, function ($url) use ($browser) {
Expand All @@ -292,6 +302,8 @@ $promise = Queue::all(3, $urls, function ($url) use ($browser) {

$promise->then(function (array $responses) {
echo 'All ' . count($responses) . ' successful!' . PHP_EOL;
}, function (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
});
```

Expand Down Expand Up @@ -360,6 +372,10 @@ resolves with the result of the first job on success and will then try
to `cancel()` all outstanding jobs.

```php
<?php

require __DIR__ . '/vendor/autoload.php';

$browser = new React\Http\Browser();

$promise = Queue::any(3, $urls, function ($url) use ($browser) {
Expand All @@ -368,6 +384,8 @@ $promise = Queue::any(3, $urls, function ($url) use ($browser) {

$promise->then(function (ResponseInterface $response) {
echo 'First response: ' . $response->getBody() . PHP_EOL;
}, function (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
});
```

Expand Down Expand Up @@ -449,6 +467,10 @@ Similarly, you can also wrap this in a function to provide a simple API and hide
all the async details from the outside:

```php
<?php

require __DIR__ . '/vendor/autoload.php';

use function React\Async\await;

/**
Expand Down
1 change: 0 additions & 1 deletion examples/01-http.php
Expand Up @@ -30,4 +30,3 @@ function (Exception $e) use ($url) {
}
);
}

1 change: 0 additions & 1 deletion examples/02-http-all.php
Expand Up @@ -32,4 +32,3 @@ function ($e) {
echo 'An error occurred: ' . $e->getMessage() . PHP_EOL;
}
);

6 changes: 3 additions & 3 deletions examples/03-http-any.php
Expand Up @@ -22,8 +22,9 @@
function (Psr\Http\Message\ResponseInterface $response) use ($url) {
// return only the URL for the first successful response
return $url;
}
);
}, function (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
});
});

$promise->then(
Expand All @@ -34,4 +35,3 @@ function ($e) {
echo 'An error occurred: ' . $e->getMessage() . PHP_EOL;
}
);

0 comments on commit f5e9505

Please sign in to comment.