This is high performance curl wrapper written in pure PHP. It's compatible with PHP 5.4+ and HHVM. Notice that libcurl version must be over 7.36.0, otherwise timeout can not suppert decimal.

   这是一个高性能的PHP封装的HTTP Restful多线程并发请求库,参考借鉴了httpresful 、multirequest等优秀的代码。它与PHP .4和hhvm兼容。 注意,libcurl版本必须>=7.36.,否则超时不支持小数。

  大家好,今天的主角是它: https://github.com/sinacms/MultiHttp ,这是本人写的一个curl工具库,在生产中十分好用,所以拿出来分享给大家,欢迎大家提issue/merge request, 点赞什么的。

<?php
// Include Composer's autoload file if not already included.
require __DIR__.'/vendor/autoload.php';
use MultiHttp\Request;
use MultiHttp\Response; //单个请求
$responses=array();
$responses[] = Request::create()->addQuery('wd=good')->get('http://baidu.com?', array(
'timeout' => 3,
'timeout_ms' => 2000,
'callback' => function (Response $response) { }))->send(); $responses[] = Request::create()->get('http://qq.com', array(
'callback' => function (Response $response) {
//sth
}))->addOptions(array(
'method' => Request::PATCH,
'timeout' => 3,
))->send();
//test post
$responses[] = Request::create()->post(
'http://127.0.0.1',array('data'=>'this_is_post_data'), array(
'callback' => function (Response $response) {
//sth
}))->send(); foreach ($responses as $response) {
echo $response->request->uri, ' takes:', $response->duration, "\n\t\n\t";
}
?>
//Multi-request 多个请求: <?php
use MultiHttp\MultiRequest; $mr = MultiRequest::create();
$rtn = $mr->addOptions(
array(
array(
'url' => 'http://google.com',
'timeout' => 2,
'method' => 'HEAD',
'data' => array(
),
'callback' => function (Response $response) {
//sth
}
),
))
->add('GET', 'http://sina.cn',array(), array(
'timeout' => 3
))
->import(Request::create()->trace('http://sohu.cn', array(
'timeout' => 3,
'callback' => function (Response $response) {
//sth
}))->applyOptions())
->send();
foreach ($rtn as $response) {
echo $response->request->uri, ' takes:', $response->duration, ' ', "\n\t\n\t";
} ?>
options选项有:

   'url'             => 'CURLOPT_URL',
'debug' => 'CURLOPT_VERBOSE',//for debug verbose
'method' => 'CURLOPT_CUSTOMREQUEST',
'data' => 'CURLOPT_POSTFIELDS', // array or string , file begin with '@'
'ua' => 'CURLOPT_USERAGENT',
'timeout' => 'CURLOPT_TIMEOUT', // (secs) 0 means indefinitely
'connect_timeout' => 'CURLOPT_CONNECTTIMEOUT',
'referer' => 'CURLOPT_REFERER',
'binary' => 'CURLOPT_BINARYTRANSFER',
'port' => 'CURLOPT_PORT',
'header' => 'CURLOPT_HEADER', // TRUE:include header
'headers' => 'CURLOPT_HTTPHEADER', // array
'download' => 'CURLOPT_FILE', // writing file stream (using fopen()), default is STDOUT
'upload' => 'CURLOPT_INFILE', // reading file stream
'transfer' => 'CURLOPT_RETURNTRANSFER', // TRUE:return string; FALSE:output directly (curl_exec)
'follow_location' => 'CURLOPT_FOLLOWLOCATION',
'timeout_ms' => 'CURLOPT_TIMEOUT_MS', // milliseconds, libcurl version > 7.36.0 ,

  

    怎么样,什么人性、直观吧,

  另外,建议大家用最新stable版本, 有很多好用的feature, 比如 expectsJson() 会直接验证response是json,并解析成php array( or hashmap),更多特性请看tests目录的使用。

  欢迎大家使用它。

  我有空会补充些详细说明。

 

一个PHP高性能、多并发、restful的工具库(基于multi_curl)的更多相关文章

  1. Bean-Query 一个把对象转换为Map的Java工具库

    刚开源了一个经过完整測试的Java工具类. 地址例如以下: https://github.com/Jimmy-Shi/bean-query 使用说明例如以下: Bean-query Click Her ...

  2. 使用 js 实现一个中文自动转换成拼音的工具库

    使用 js 实现一个中文自动转换成拼音的工具库 中文 => zhong-wen 应用场景 SEO 友好, URL 自动转换 blogs 发布文章,自动化部署,自动生成 url 的 path (时 ...

  3. 前端MVC Vue2学习总结(六)——axios与跨域HTTP请求、Lodash工具库

    一.axios Vue更新到2.0之后宣告不再对vue-resource更新,推荐使用axios,axios是一个用于客户端与服务器通信的组件,axios 是一个基于Promise 用于浏览器和 no ...

  4. 非常好用的JavaScript 工具库--lodash

    一.什么是lodash? lodash库是一个具有一致接口.模块化.高性能等特性的 JavaScript 工具库. lodash是一个javascript库,也是Node JS的常用模块,它内部封装了 ...

  5. fastjson——json工具库

    fastjson alibaba fastjson是阿里巴巴公司开源维护的一个处理json格式数据的java工具库. 功能特性: 数据绑定databind (json string <--> ...

  6. 浅谈千万级PV/IP规模高性能高并发网站架构(转自老男孩)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/736710 如果把来 ...

  7. 浅谈千万级PV/IP规模高性能高并发网站架构

    高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”. 如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的请求一下打到我们的指挥部 ...

  8. 高性能高并发服务器架构设计探究——以flamigo服务器代码为例

    这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序. 所谓高性能就是服务器能流畅地处理各个客户端的连接并尽量低延迟地应答客户端的请求:所谓高并发,指的是服务器可以同时 ...

  9. (转)浅谈千万级PV/IP规模高性能高并发网站架构

    浅谈千万级PV/IP规模高性能高并发网站架构 原文:http://blog.51cto.com/oldboy/736710 文章架构简图:   高并发访问的核心原则其实就一句话“把所有的用户访问请求都 ...

随机推荐

  1. linux系统莫名被黑的诡异经历

    2017年10月28日,ssh登录本地虚拟机之后发现主机名被改成了HUAIWEI_P10. 我一个同事用的此款手机,起初怀疑是他,没放心上. 今天(10月30)发现自己ssh登录不上了.恼火了办公室开 ...

  2. 利用cookies+requests包登陆微博,使用xpath抓取目标用户的用户信息、微博以及对应评论

    本文目的:介绍如何抓取微博内容,利用requests包+cookies实现登陆微博,lxml包的xpath语法解析网页,抓取目标内容. 所需python包:requests.lxml 皆使用pip安装 ...

  3. java语言在某个数组中查找某个字符出现的次数

    package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 在某 ...

  4. MarkDown的快速入门

    简介 简单的去解释MarkDown就是html,但是将html中的元素用符号去代替使用.本文用的编译软件是Atom(神器),不多说直接上图看效果. 语法 文本 列表 区块 分割符 表格 链接 mark ...

  5. server-sent-event使用流信息向客户端发送数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. redis数据库安装及简单的增删改查

    redis下载地址:https://github.com/MSOpenTech/redis/releases. 解压之后,运行 redis-server.exe redis.windows.conf  ...

  7. 如何优雅的设计 React 组件

    作者:晓冬 本文原创,转载请注明作者及出处 如今的 Web 前端已被 React.Vue 和 Angular 三分天下,一统江山十几年的 jQuery 显然已经很难满足现在的开发模式.那么,为什么大家 ...

  8. struts2 中文乱码问题,自定义过滤器通用解决方法

    问题描述 在JSP中使用form表单向后台action中传递中文参数,后台action接收到参数出现中文乱码.JSP页面统一采用了utf-8编码格式.由于struts2默认采用的编码为utf-8,根据 ...

  9. MYSQL触发器在PHP项目中用来做信息备份、恢复和清空

    案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能). 思路:要有一张员工表,还要有一张 ...

  10. 零基础如何迅速学习HTML5?新手小白学习web前端H5自白!

    很多的人在毕业之后才发现原来学的专业不是自己想做的工作,或者专业对口的工作待遇让人觉得并不满意,于是很多人选择培训机构学新的一门技能转换行业.IT行业的web前端H5受到很多学员的青睐.那么学习web ...