This library implement the HTTP Partial Request to PHP projects, following the RFC 7233.
Initially this library is implementing only the Client to consume any server that implement the HTTP Partial Request. You can consume this library inside of your project, pay attention, you are responsible to manage exceptions and consume responses after any partial request.
You need to pull the package via composer.
$ composer require davidasrocha/php-resumable-download
The client can be used to check server supports to HTTP Partial Request, execute the first partial request, execute a new partial request, re-execute partial request, and resume partial request.
use GuzzleHttp\Client;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
require __DIR__ . "/vendor/autoload.php";
$logger = new Logger('resume.request.client');
$logger->pushHandler(new StreamHandler(__DIR__ . '/logs/client.log'));
$client = new \PHP\ResumableDownload\Client(new Client(['base_uri' => 'http://127.0.0.1:8000/index.php']));
$client->setLogger($logger);
if ($client->serverSupportsPartialRequests()) {
$client->start();
$client->next();
$client->next();
$client->prev();
$client->resume(2048, 4097);
$client->next();
}
To get a response of the partial request, you can implement some bellow codes:
// execute the first partial request
$client->start();
$response = $client->current();
// execute a new partial request to the next part
$client->next();
$response = $client->current();
// execute a new partial request to the previous part
$client->next();
$client->next();
$client->prev();
$response = $client->current();
This project has a Dockerfile
and docker-compose.yml
to easily run tests:
To start, inside of the project repository, you will run the command to build a new Docker image containing the PHP dependencies:
$ docker-compose build --force-rm --no-cache
Finally, you can run tests using this command:
$ docker-compose run php