workerman/http-client

说明

workerman/http-client是一个异步http客户端组件。所有请求响应异步非阻塞,内置连接池,消息请求和响应符合PSR7规则。

安装:

  1. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  2. composer require workerman/http-client

示例:

  1. use Workerman\Worker;
  2. require_once __DIR__ . '/vendor/autoload.php';
  3. $worker = new Worker();
  4. $worker->onWorkerStart = function () {
  5. $http = new Workerman\Http\Client();
  6. $http->get('https://example.com/', function ($response) {
  7. var_dump($response->getStatusCode());
  8. echo $response->getBody();
  9. }, function ($exception) {
  10. echo $exception;
  11. });
  12. $http->post('https://example.com/', ['key1' => 'value1', 'key2' => 'value2'], function ($response) {
  13. var_dump($response->getStatusCode());
  14. echo $response->getBody();
  15. }, function ($exception) {
  16. echo $exception;
  17. });
  18. $http->request('https://example.com/', [
  19. 'method' => 'POST',
  20. 'version' => '1.1',
  21. 'headers' => ['Connection' => 'keep-alive'],
  22. 'data' => ['key1' => 'value1', 'key2' => 'value2'],
  23. 'success' => function ($response) {
  24. echo $response->getBody();
  25. },
  26. 'error' => function ($exception) {
  27. echo $exception;
  28. }
  29. ]);
  30. };
  31. Worker::runAll();

Optinons 选项

  1. <?php
  2. require __DIR__ . '/vendor/autoload.php';
  3. use Workerman\Worker;
  4. $worker = new Worker();
  5. $worker->onWorkerStart = function(){
  6. $options = [
  7. 'max_conn_per_addr' => 128, // 每个地址最多维持多少并发连接
  8. 'keepalive_timeout' => 15, // 连接多长时间不通讯就关闭
  9. 'connect_timeout' => 30, // 连接超时时间
  10. 'timeout' => 30, // 等待响应的超时时间
  11. ];
  12. $http = new Workerman\Http\Client($options);
  13. $http->get('http://example.com/', function($response){
  14. var_dump($response->getStatusCode());
  15. echo $response->getBody();
  16. }, function($exception){
  17. echo $exception;
  18. });
  19. };
  20. Worker::runAll();

注意:

1、项目首先要加载require __DIR__ . '/vendor/autoload.php';

2、所有的异步编码必须在onXXX回调中编写

3、支持基于workerman开发的所有项目,包括GatewayWorker、PHPSocket.io等