项目作者: sinacms

项目描述 :
This is a high performance , very useful multi-curl tool written in php. 一个超级好用的并发CURL工具!!!(httpful,restful, concurrency)
高级语言: PHP
项目地址: git://github.com/sinacms/MultiHttp.git


MultiHttp



  1. This is high performance curl wrapper written in pure PHP.
  2. It's compatible with PHP 5.4+ and HHVM.
  3. Notice that libcurl version must be over 7.36.0, otherwise timeout can not suppert decimal.
  4. 这是一个高性能的PHP封装的HTTP Restful多线程并发请求库,参考借鉴了httpful 、multirequest等优秀的代码。它与PHP 5.4和hhvm兼容。
  5. 注意,libcurl版本必须>=7.36.0,否则超时不支持小数。
  6. ## 请使用最新 Tag ( Please use the latest tag version)


Contents

Feature

  • alias of curl option, e.g. ‘timeout’ equals ‘CURLOPT_TIMEOUT’ etc.
  • Request and MultiRequest class , can be used in any combination
  • graceful and efficient

Installation

You can use composer to install this library from the command line.

  1. composer require sinacms/multihttp

Usage

Single-request:

  1. <?php
  2. // Include Composer's autoload file if not already included.
  3. require_once __DIR__.'/vendor/autoload.php';
  4. use MultiHttp\Request;
  5. use MultiHttp\Response;
  6. //method 1
  7. Request::create()->get('http://sina.com.cn', array(
  8. 'timeout' => 3,
  9. 'expects_mime'=>'json',
  10. 'retry_times' => 3,
  11. 'ip' => '127.0.0.1:8080',//alias for proxy, better than raw proxy
  12. 'callback' => function (Response $response) {
  13. echo $response->body;
  14. },
  15. ))->send();
  16. //method 2
  17. $result = Request::create()->post(
  18. 'http://127.0.0.1',array('data'=>'this_is_post_data'), array(
  19. 'callback' => function (Response $response) {
  20. echo $response->body;
  21. }))->send();

Multi-request:

  1. <?php
  2. require_once __DIR__.'/vendor/autoload.php';
  3. use MultiHttp\MultiRequest;
  4. use MultiHttp\Response;
  5. $mr = MultiRequest::create();
  6. $rtn = $mr->add('GET', 'http://sina.cn',array(), array(
  7. 'timeout' => 3,
  8. 'callback' => function (Response $response) {
  9. echo $response->body;
  10. }
  11. ))
  12. ->add('GET', 'http://google.cn',array(), array(
  13. 'timeout' => 3,
  14. 'callback' => function (Response $response) {
  15. echo $response->body;
  16. }
  17. ))
  18. ->sendAll();
  19. ?>

Documentation

  • Request

    • option shorthand

      1. 'url' => 'CURLOPT_URL',
      2. 'debug' => 'CURLOPT_VERBOSE',//for debug verbose
      3. 'method' => 'CURLOPT_CUSTOMREQUEST',
      4. 'data' => 'CURLOPT_POSTFIELDS', // array or string , file begin with '@'
      5. 'ua' => 'CURLOPT_USERAGENT',
      6. 'timeout' => 'CURLOPT_TIMEOUT', // (secs) 0 means indefinitely
      7. 'connect_timeout' => 'CURLOPT_CONNECTTIMEOUT',
      8. 'referer' => 'CURLOPT_REFERER',
      9. 'binary' => 'CURLOPT_BINARYTRANSFER',
      10. 'port' => 'CURLOPT_PORT',
      11. 'header' => 'CURLOPT_HEADER', // TRUE:include header
      12. 'headers' => 'CURLOPT_HTTPHEADER', // array
      13. 'download' => 'CURLOPT_FILE', // writing file stream (using fopen()), default is STDOUT
      14. 'upload' => 'CURLOPT_INFILE', // reading file stream
      15. 'transfer' => 'CURLOPT_RETURNTRANSFER', // TRUE:return string; FALSE:output directly (curl_exec)
      16. 'follow_location' => 'CURLOPT_FOLLOWLOCATION',
      17. 'timeout_ms' => 'CURLOPT_TIMEOUT_MS', // milliseconds, libcurl version > 7.36.0 ,
    • public static function create()

    • public function endCallback()
    • public function hasEndCallback()
    • public function onEnd(callable$callback)
    • public function uri
    • public function getIni($field)
    • public function addQuery($data)
    • public function post($uri, array $payload = array(), array $options = array())
    • public function addOptions(array $options = array())
    • public function get($uri, array $options = array())
    • public function send()
    • public function applyOptions()
    • public function makeResponse($isMultiCurl = false)
  • MultiRequest

    • public static function create()
    • public function addOptions(array $URLOptions)
    • public function add($method, $uri, array $payload = array(), array $options = array())
    • public function import(Request $request)
    • public function sendAll()

[More]https://github.com/sinacms/MultiHttp/blob/master/usage.md