PHPackages                             shutterstock/presto - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. shutterstock/presto

ActiveLibrary[HTTP &amp; Networking](/categories/http)

shutterstock/presto
===================

PHP REST Orchestration for interacting with RESTful services

2.0.1(11y ago)813.3k7[5 issues](https://github.com/shutterstock/presto/issues)3PHPPHP &gt;=5.3.0CI failing

Since Oct 1Pushed 8y ago39 watchersCompare

[ Source](https://github.com/shutterstock/presto)[ Packagist](https://packagist.org/packages/shutterstock/presto)[ Docs](https://github.com/shutterstock/presto)[ RSS](/packages/shutterstock-presto/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)Dependencies (1)Versions (5)Used By (3)

presto
======

[](#presto)

PHP REST Orchestration
----------------------

[](#php-rest-orchestration)

A REST client to access any services that support RESTful access or any HTTP access method. Supports all HTTP methods including: GET, POST, DELETE, PUT, OPTIONS, HEAD, AUTH, and custom. Simultaneous requests are supported through the use of a queue activation setting. Use of the queue will allow multiple requests to be processed in parallel, which can significantly speed up calls to multiple services or API end points.

### Example

[](#example)

```
$request = new Shutterstock\Presto\Presto();
$r = $request->get('http://www.google.com');
```

### Features

[](#features)

1. Built-in support for all common REST call types
2. Support for adding AUTH headers
3. Supports queueing and parallel requests
4. Support for passing a callback function for processing response
5. Logging and profiling built-in
6. Customizable timeouts and retries on a per request basis
7. Support for setting user agent and referer

### More Details

[](#more-details)

Presto relies on curl to make all requests. Many customization options are available including custom header additions, referrer, and user agent. Profiling is built-in and all the curl meta data and timing information are logged to assist with troubleshooting and optimization. Failed requests are logged as errors with optional exception throwing. A slow request configuration option allows logging of slow requests to the error log. Failed requests can automatically be retried a configureable number of times after a specified delay.

All request results are stored in a standardized Response object that includes meta data, header and request response data blocks. A meta data `is_success` entry is always present to indicate if the network request was successful or not. In the event of failure, there will be error information in the meta section.

### Testing and Coverage

[](#testing-and-coverage)

Presto has both unit and integration tests. To view coverage...

```
phpunit -c /tests/unit
phpunit -c /tests/integration

```

### Queueing Example

[](#queueing-example)

```
Shutterstock\Presto\Presto::initQueue();

// callback function to process response
$rest_response = function($r) {
    if ($r->is_success) {
        echo "{$r->http_code} - {$r->url} " . round($r->total_time, 2) . "s\n";
    } else {
        echo "0 - {$r->url} {$r->error}\n";
    }
};

// URLs to hit, include one that will fail and another that will return a 404
$urls = [
    'http://www.google.com',
    'http://www.yahoo.com',
    'http://www.hfjkhfwekjhfkj.info',
    'http://www.bigstockphoto.com/qwerty',
];

// Create an array to hold Presto request objects
$requests = array();

foreach ($urls as $url) {
    $requests[$url] = new Shutterstock\Presto\Presto();
    $requests[$url]->queue_enabled = true;
    $requests[$url]->get($url, null, $rest_response);
}

// Process all queued requests
Shutterstock\Presto\Presto::processQueue();
```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance8

Infrequent updates — may be unmaintained

Popularity33

Limited adoption so far

Community24

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 56.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~294 days

Total

3

Last Release

4023d ago

Major Versions

1.0.0 → 2.0.02014-10-20

### Community

Maintainers

![](https://www.gravatar.com/avatar/a8b596b5f9021aebc6f723f8b59d53ea2186f6a7c61f80989a140db082db632d?d=identicon)[Bar\_Code](/maintainers/Bar_Code)

---

Top Contributors

[![jacobemerick](https://avatars.githubusercontent.com/u/527814?v=4)](https://github.com/jacobemerick "jacobemerick (17 commits)")[![bbaisley](https://avatars.githubusercontent.com/u/1406700?v=4)](https://github.com/bbaisley "bbaisley (11 commits)")[![RichardLitt](https://avatars.githubusercontent.com/u/910753?v=4)](https://github.com/RichardLitt "RichardLitt (2 commits)")

---

Tags

phpapiclientrestlibrarymoduleservicessoa

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/shutterstock-presto/health.svg)

```
[![Health](https://phpackages.com/badges/shutterstock-presto/health.svg)](https://phpackages.com/packages/shutterstock-presto)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
