PHP Classes

PHP Asynchronous HTTP Request: Queue and send multiple asynchronous HTTP requests

Recommend this page to a friend!
     
  Info   Example   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 96 All time: 9,863 This week: 47Up
Version License PHP version Categories
req-async 1.0.0MIT/X Consortium ...5HTTP, PHP 5
Description 

Author

This package can queue and send multiple asynchronous HTTP requests.

It can store in an array the parameters of HTTP requests to be sent to remote Web servers.

The parameters define details of the HTTP requests like the URL, HTTP method, the request headers, file to store cookies, etc..

The package can send the HTTP requests in parallel using the Curl extension and returns the results when all requests are finished.

Picture of Mateo
  Performance   Level  
Innovation award
Innovation award
Nominee: 10x

Winner: 3x

 

Example

<?php

require './vendor/autoload.php';
use
Async\Req;
use
Async\Run;

$req = new Req();
$promise = array();


$promise[] = $req::Get('https://httpbin.org/get'); // GET method
$promise[] = $req::Post('https://httpbin.org/post'); // POST method
$promise[] = $req::Put('https://httpbin.org/put'); // CUSTOM method


$headers = ['Origin: https://google.com/', 'X-msg: Testing async resquest'];
$post = ['name' => 'John', 'age' => '25'];

// Using customs headers
$promise[] = $req::Get('https://httpbin.org/get', $headers);

// Using custom post data
$promise[] = $req::Post('https://httpbin.org/post', $post);

// Using custom headers and post data
$promise[] = $req::Post('https:/httpbin.org/post', $post, $headers);

// Using cookies | GET method
$promise[] = $req::Get('https://httpbin.org/cookies/set?name=John&age=25', null, null, 'file_example_cookie_file');
$promise[] = $req::Get('https://httpbin.org/cookies', $headers, ['METHOD' => 'TUNNEL', 'SERVER' => '103.28.149.107:3128'], 'file_example_cookie_file'); // Headers and http proxy
$promise[] = $req::Get('https://httpbin.org/get', $headers, ['METHOD' => 'TUNNEL', 'SERVER' => '', 'AUTH' => 'user:pass'], 'file_example_cookie_file'); // Headers and auth proxy


print_r(Run::Async($promise));
// echo json_encode(Run::Async($promise));


Details

Async requests

Create new request

$req = new Req();
$promise = array();
$promise[] = $req::Get('https://httpbin.org/get'); // GET method
$promise[] = $req::Post('https://httpbin.org/post'); // POST method
$promise[] = $req::Put('https://httpbin.org/put'); // CUSTOM method

Run all request

$response = Run::Async($promise);

Proxy sintax

# PROXY (http/s, socks4, socks5)
$server = [
    "METHOD" => "TUNNEL",
    "SERVER" => "ip:port"
];

# Windscribe
$server = [
    "METHOD" => "CUSTOM",
    "SERVER" = "socks5h://socks-us.windscribe.com:1080",
    "AUTH" => "w07l3gbt-r6vxdfpb:ucxqefrada3h"
];

# Webshare
$server = [
    "METHOD" => "CUSTOM",
    "SERVER" = "p.webshare.io:80",
    "AUTH" => "user-rotate:pass"
];


# APIFY valid syntax example
$server = [
    "METHOD" => "CUSTOM",
    "SERVER" = "http://proxy.apify.com:8000",
    "AUTH" => "auto:pasword"
];

# IPVANISH valid syntax example
$server = [
    "METHOD" => "CUSTOM",
    "SERVER" => "akl-c12.ipvanish.com:1080",
    "AUTH"   => "my_zone_customer_id:my_zone_customer_password"
];

Get sintax

$headers = ['Origin: https://google.com/', 'MSG: testing'];
$server = ["METHOD" => "TUNNEL", "SERVER" => "ip:port"];

$req = new Req();
$promise = array();

$promise[] = $req::Get('https://httpbin.org/get');
$promise[] = $req::Get('https://httpbin.org/get', $headers); // Using headers
$promise[] = $req::Get('https://httpbin.org/cookies/set?name=John&age=25', $headers, null, 'file_example_cookie_file'); // Using headers and cookies
$promise[] = $req::Get('https://httpbin.org/get', null, $server); // Using only proxy

$response = Run::Async($promise); // Run all resquests

Post sintax

$headers = ['Origin: https://google.com/', 'MSG: testing'];
$server = ["METHOD" => "TUNNEL", "SERVER" => "ip:port"];
$post = ['name' => 'Jhon', 'age' => 25];

$req = new Req();
$promise = array();

$promise[] = $req::Post('https://httpbin.org/post'); // Simple resquest
$promise[] = $req::Post('https://httpbin.org/post', http_build_query($post)); // Post data
$promise[] = $req::Post('https://httpbin.org/post', $post); // Post (in json)
$promise[] = $req::Post('https://httpbin.org/post', $post, $headers); // Post (in json) and headers
$promise[] = $req::Post('https://httpbin.org/cookies/set?name=John&age=25', null, $headers, null, 'cookie_example'); // Using headers and cookies

Custom methods

$req = new Req();
$promise = array();

/
 * Format:
 * $promise[] = $req::MethodName('url', $post_data, $headers, $server, $cookie_name);
 * $response = Run::Async($promise);
*/
$promise[] = $req::Put('https://httpbin.org/put');
$promise[] = $req::Patch('https://httpbin.org/patch');
$promise[] = $req::Delete('https://httpbin.org/delete');

Run requests

$req = new Req();
$promise = array();

for ($i=0; $i < 10; $i++) {
    $promise[] = $req::Get('https://httpbin.org/get');
}

$response = Run::Async($promise); // Run all resquests
$response = Run::Async([$promise[0], $promise[1]]); // Run someone resquests
$response = Run::Async($promise, 100); // Modified ms

Installation

Install source from GitHub

To install the source code:

$ git clone https://github.com/Mateodioev/req-async.git

Install from Composer

$ composer require mateodioev/async-curl-requests:dev-master

And include it in your scripts:

require './vendor/autoload.php';
use Async\Req;
use Async\Run;

  Files folder image Files (22)  
File Role Description
Files folder imagesrc (6 files)
Files folder imagevendor (1 file, 1 directory)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file composer.lock Data Auxiliary data
Accessible without login Plain text file examples.php Example Example script
Accessible without login Plain text file readme.MD Doc. Documentation

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:96
This week:0
All time:9,863
This week:47Up