alixaxel/curly

Parallel cURL Wrapper for PHP

dev-master 2014-09-17 16:24 UTC

This package is not auto-updated.

Last update: 2024-04-23 01:08:56 UTC


README

Build Status

#curly

Parallel cURL Wrapper for PHP

##Requirements

  • PHP 5.4+
  • cURL Extension

##Installation (via Composer)

Add the following dependency in your composer.json file:

{
	"require": {
		"alixaxel/curly": "*"
	}
}

And then just run composer install or composer update.

##Usage (Single Requests)

<?php

use alixaxel\curly\CURL;

$url = 'http://httpbin.org/post',
$data = [
	'foo' => sprintf('@', __FILE__),
	'bar' => 'baz',
];

var_dump(CURL::Uni($url, $data, 'POST'));

##Usage (Multiple Requests)

<?php

use alixaxel\curly\CURL;

$url = 'http://httpbin.org/post',
$data = [
	'foo' => sprintf('@', __FILE__),
	'bar' => 'baz',
];

$handles = [];

for ($i = 0; $i < 16; ++$i)
{
	$handles[$key = uniqid()] = CURL::Uni($url, $data, 'POST', null, null, 0);
}

$parallel = 4; // number of requests to make in parallel
$throttle = 1; // wait at least 1 second per each $parallel requests

print_r(CURL::Multi($handles, null, $parallel, $throttle)); // original keys are preserved

##Usage (Multiple Requests with Callback)

<?php

use alixaxel\curly\CURL;

$url = 'http://httpbin.org/post',
$data = [
	'foo' => sprintf('@', __FILE__),
	'bar' => 'baz',
];

$handles = [];

for ($i = 0; $i < 16; ++$i)
{
	$handles[$key = uniqid()] = CURL::Uni($url, $data, 'POST', null, null, 0);
}

$parallel = 4; // number of requests to make in parallel
$throttle = 1; // wait at least 1 second per each $parallel requests

$result = CURL::Multi($handles, function ($response, $info, $id) {
	var_dump($id, $response);
}, $parallel, $throttle);

print_r($result); // each key will have the return value of the lambda callback 

##Changelog

  • 0.1.0 initial release
  • 0.2.0 added XPathify() utility method

##Credits

XPathify() is based on visionmedia/php-selector.

##License (MIT)

Copyright (c) 2014 Alix Axel (alix.axel+github@gmail.com).