workerman/http-client
Composer 安装命令:
composer require workerman/http-client
包简介
README 文档
README
Asynchronous http client for PHP based on workerman.
-
Asynchronous requests.
-
Uses PSR-7 interfaces for requests, responses.
-
Build-in connection pool.
-
Support Http proxy.
-
Support Socks5 proxy. (include authenticated)
-
Parallel Request. (use 'revolt/event-loop')
Installation
composer require workerman/http-client
Examples
example.php
<?php use Workerman\Worker; require_once __DIR__ . '/vendor/autoload.php'; $worker = new Worker(); $worker->onWorkerStart = function () { $http = new Workerman\Http\Client(); $http->get('https://example.com/', function ($response) { var_dump($response->getStatusCode()); echo $response->getBody(); }, function ($exception) { echo $exception; }); $http->post('https://example.com/', ['key1' => 'value1', 'key2' => 'value2'], function ($response) { var_dump($response->getStatusCode()); echo $response->getBody(); }, function ($exception) { echo $exception; }); $http->request('https://example.com/', [ 'method' => 'POST', 'version' => '1.1', 'headers' => ['Connection' => 'keep-alive'], 'data' => ['key1' => 'value1', 'key2' => 'value2'], 'success' => function ($response) { echo $response->getBody(); }, 'error' => function ($exception) { echo $exception; } ]); }; Worker::runAll();
Run with commands php example.php start or php example.php start -d
Optinons
<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; $worker = new Worker(); $worker->onWorkerStart = function(){ $options = [ 'max_conn_per_addr' => 128, 'keepalive_timeout' => 15, 'connect_timeout' => 30, 'timeout' => 30, ]; $http = new Workerman\Http\Client($options); $http->get('http://example.com/', function($response){ var_dump($response->getStatusCode()); echo $response->getBody(); }, function($exception){ echo $exception; }); }; Worker::runAll();
Proxy
require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; $worker = new Worker(); $worker->onWorkerStart = function(){ $options = [ 'max_conn_per_addr' => 128, 'keepalive_timeout' => 15, 'connect_timeout' => 30, 'timeout' => 30, // 'context' => [ // 'http' => [ // // All use '$http' will cross proxy. The highest priority here. !!! // 'proxy' => 'http://127.0.0.1:1080', // ], // ], ]; $http = new Workerman\Http\Client($options); $http->request('https://example.com/', [ 'method' => 'GET', 'proxy' => 'http://127.0.0.1:1080', // 'proxy' => 'http://user:pass@127.0.0.1:1080', // 'proxy' => 'socks5://127.0.0.1:1081', // 'proxy' => 'socks5://username:password@127.0.0.1:1081', 'success' => function ($response) { echo $response->getBody(); }, 'error' => function ($exception) { echo $exception; } ]); }; Worker::runAll();
Parallel
This feature requires http-client version >= v3.0 . When using the fiber driver, you must install revolt/event-loop.
use Workerman\Worker; use Workerman\Events\Fiber; use Workerman\Events\Swoole; use Workerman\Events\Swow; require_once __DIR__ . '/vendor/autoload.php'; $worker = new Worker(); $worker->eventLoop = Fiber::class; // or Swoole::class or Swow::class $worker->onWorkerStart = function () { $http = new Workerman\Http\ParallelClient(); $http->batch([ ['http://example.com', ['method' => 'POST', 'data' => ['key1' => 'value1', 'key2' => 'value2']]], ['https://example2.com', ['method' => 'GET']], ]); $http->push('http://example3.com'); $result = $http->await(false); // $result: // [ // [bool $isSuccess = true, Workerman\Http\Response $response], // [bool $isSuccess = false, Throwable $error], // [bool $isSuccess, Workerman\Http\Response $response], // ] }; Worker::runAll();
License
MIT
workerman/http-client 适用场景与选型建议
workerman/http-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 78.23k 次下载、GitHub Stars 达 56, 最近一次更新时间为 2019 年 10 月 21 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 workerman/http-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 workerman/http-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 78.23k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 56
- 点击次数: 7
- 依赖项目数: 24
- 推荐数: 2
其他信息
- 授权协议: MIT
- 更新时间: 2019-10-21