alixaxel / curly
PHP 的并行 cURL 包装器
dev-master
2014-09-17 16:24 UTC
Requires
- php: >=5.4.0
- lib-curl: *
Requires (Dev)
- phpunit/phpunit: 4.0.*
This package is not auto-updated.
Last update: 2024-09-24 02:59:31 UTC
README
#curly
PHP 的并行 cURL 包装器
##要求
- PHP 5.4+
- cURL 扩展
##安装(通过 Composer)
在您的 composer.json 文件中添加以下依赖项
{ "require": { "alixaxel/curly": "*" } }
然后只需运行 composer install
或 composer update
。
##使用(单个请求)
<?php use alixaxel\curly\CURL; $url = 'http://httpbin.org/post', $data = [ 'foo' => sprintf('@', __FILE__), 'bar' => 'baz', ]; var_dump(CURL::Uni($url, $data, 'POST'));
##使用(多个请求)
<?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
##使用(带有回调的多个请求)
<?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
##变更日志
- 0.1.0
初始版本 - 0.2.0
添加 XPathify() 工具方法
##鸣谢
XPathify()
基于 visionmedia/php-selector.
##许可(MIT)
版权所有 (c) 2014 Alix Axel (alix.axel+github@gmail.com).