PHPackages                             paulzi/multicurl - 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. paulzi/multicurl

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

paulzi/multicurl
================

MultiCurl. A wrapper over curl\_multi\_init.

v0.1.0(9y ago)380MITPHPPHP &gt;=5.4.0

Since Oct 14Pushed 9y ago1 watchersCompare

[ Source](https://github.com/paulzi/multicurl)[ Packagist](https://packagist.org/packages/paulzi/multicurl)[ RSS](/packages/paulzi-multicurl/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

MultiCurl
=========

[](#multicurl)

A wrappers over curl\_multi\_init.

[![Packagist Version](https://camo.githubusercontent.com/a5851b05fb6ebadc6be45c4b3da4dea566130c728e6d1d73a724b815d2eb7f47/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7061756c7a692f6d756c74696375726c2e737667)](https://packagist.org/packages/paulzi/multicurl)[![Total Downloads](https://camo.githubusercontent.com/8997eaf1063ee66327fe3da6548f8d8340952c497224b7e967abde00edd12182/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7061756c7a692f6d756c74696375726c2e737667)](https://packagist.org/packages/paulzi/multicurl)

This provide two class:

- **MultiCurl** - simple wrapper over curl\_multi\_init with events
- **MultiCurlQueue** - extended version of MultiCurl, with queue of requests, retry failed requests and multithreading.

Install
-------

[](#install)

Install via Composer:

```
composer require paulzi/multicurl:~0.1.0
```

or add

```
"paulzi/multicurl" : "~0.1.0"
```

to the `require` section of your `composer.json` file.

Usage
-----

[](#usage)

```
function generateCurl($url)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL,            $url);
    curl_setopt($curl, CURLOPT_HEADER,         false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_ENCODING,       '');
    return $curl;
}

// usage MultiCurl
$request = new MultiCurlRequest();
$request->curl = generateCurl('https://google.com');
$request->onSuccess = function($request, $response, $content) {
    var_dump('Success', $content);
};
$request->onError = function($request, $response, $content, $errCode, $errMsg) {
    var_dump('Error', $errMsg);
};

$loader = new MultiCurl();
$loader->add($request);
$loader->run();

// usage MultiCurlQueue
$request1 = new MultiCurlRequest();
$request1->curl = generateCurl('https://google.com');
$request1->onSuccess = function($request, $response, $content) {
    var_dump('Request1 Success', $content);
};
$request1->onRetry = function($request, $response, $content, $errCode, $errMsg) {
    var_dump('Request1 Retry', $errMsg);
};
$request1->onError = function($request, $response, $content, $errCode, $errMsg) {
    var_dump('Request1 Error', $errMsg);
};

$request2 = new MultiCurlRequest();
$request2->curl = generateCurl('http://none.noexist');
$request2->onSuccess = function($request, $response, $content) {
    var_dump('Request2 Success', $content);
};
$request2->onRetry = function($request, $response, $content, $errCode, $errMsg) {
    var_dump('Request2 Retry', $errMsg);
};
$request2->onError = function($request, $response, $content, $errCode, $errMsg) {
    var_dump('Request2 Error', $errMsg);
};

$loader = new MultiCurlQueue();
$loader->threads = 2;
$loader->retry   = 3;
$loader->run([$request1, $request2]);
```

Documentation
-------------

[](#documentation)

### MultiCurl

[](#multicurl-1)

- `add($request)` - add request to job
- `run()` - execute requests
- `onBefore($request)` - on before execute request event
- `onSuccess($request, $response, $content)` - on success request event
- `onError($request, $response, $content, $errCode, $errMsg)` - on error request event
- `onAlways($request, $response, $content)` - on always request event

### MultiCurlQueue

[](#multicurlqueue)

- `run($requests)` - execute requests
- `onBefore($request)` - on before execute request event
- `onSuccess($request, $response, $content)` - on success request event
- `onError($request, $response, $content, $errCode, $errMsg)` - on error request event
- `onAlways($request, $response, $content)` - on always request event
- `onRetry($request, $response, $content, $errCode, $errMsg, $retryIndex, $retryTotal)` - on retry request event

### MultiCurlRequest

[](#multicurlrequest)

- `$curl` - curl resource
- `$onBefore` - on before execute request callback
- `$onSuccess` - on success request callback
- `$onError` - on error request callback
- `$onAlways` - on always request callback
- `$onRetry` - on retry request callback

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

3499d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/9402208?v=4)[PaulZi](/maintainers/PaulZi)[@paulzi](https://github.com/paulzi)

---

Top Contributors

[![paulzi](https://avatars.githubusercontent.com/u/9402208?v=4)](https://github.com/paulzi "paulzi (4 commits)")

---

Tags

curlmulticurl

### Embed Badge

![Health badge](/badges/paulzi-multicurl/health.svg)

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

###  Alternatives

[rmccue/requests

A HTTP library written in PHP, for human beings.

3.6k34.5M258](/packages/rmccue-requests)[php-http/curl-client

PSR-18 and HTTPlug Async client with cURL

48247.0M384](/packages/php-http-curl-client)[smi2/phpclickhouse

PHP ClickHouse Client

83510.1M71](/packages/smi2-phpclickhouse)[curl/curl

cURL class for PHP

32814.9M195](/packages/curl-curl)[meabed/php-parallel-soap

Multi curl SoapClient that allow to perform multiple requests to SoapServer

4389.1k](/packages/meabed-php-parallel-soap)[apimatic/unirest-php

Unirest PHP

224.7M116](/packages/apimatic-unirest-php)

PHPackages © 2026

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