当前位置: 首页 > news >正文

网上商城建设 网站定制开发网销是做什么的

网上商城建设 网站定制开发,网销是做什么的,触屏版网站开发样式,网站开发代码无中文概述 workerman/http-client 是一个异步http客户端组件。所有请求响应异步非阻塞,内置连接池,消息请求和响应符合PSR7规范。 Workerman 5.0 版本中的异步HTTP协程客户端组件是一个基于PHP协程的高性能HTTP客户端,它能够充分利用PHP的异步特…

概述

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

Workerman 5.0 版本中的异步HTTP协程客户端组件是一个基于PHP协程的高性能HTTP客户端,它能够充分利用PHP的异步特性来提高HTTP请求的效率和性能。这个组件允许开发者在编写PHP代码时,以同步的方式发送异步HTTP请求,从而使得编写的代码更加简洁易懂,同时也能够处理大量的并发请求。

特点

  • 异步非阻塞:所有的请求和响应都是异步进行的,不会阻塞主线程,这意味着可以同时处理多个HTTP请求和响应。

  • 内置连接池:为了提高效率和性能,该组件内置了连接池,可以复用TCP连接,减少建立和关闭连接的开销。

  • 符合PSR-7规范:消息请求和响应都符合PSR-7规范,这使得它能够与遵循该规范的其他PHP组件和库无缝集成。

  • 支持多种协议:除了HTTP和HTTPS协议,该组件还支持WebSocket、WSS等协议,使其能够应对更多的应用场景。

安装

composer require workerman/http-client
开源技术小栈

注意:协程用法需要workerman>=5.0workerman/http-client>=2.0.0 并安装 composer require revolt/event-loop ^1.0.0

启动webman

/var/www/webman/admin.webman.tinywan.com # php start.php start
Workerman[start.php] start in DEBUG mode
------------------------------------------------------- WORKERMAN --------------------------------------------------------
Workerman/5.0.0         PHP/8.2.10 (Jit off)          Linux/5.15.167.4-microsoft-standard-WSL2
-------------------------------------------------------- WORKERS ---------------------------------------------------------
event-loop  proto       user        worker                       listen                      count       state
revolt      tcp         root        webman                       http://0.0.0.0:8288         24           [OK]
revolt      tcp         root        monitor                      none                        1            [OK]
--------------------------------------------------------------------------------------------------------------------------

协程用法

WorkerMan 中使用

declare(strict_types=1);
use Workerman\Worker;require_once '../vendor/autoload.php';try {$worker = new Worker();$worker->onWorkerStart = function () {$http = new Workerman\Http\Client();$response = $http->get('https://www.tinywan.com/');var_dump($response->getStatusCode());echo $response->getBody() . PHP_EOL;$response = $http->post('https://www.tinywan.com/', ['key1' => 'value1', 'key2' => 'value2']);var_dump($response->getStatusCode());echo $response->getBody() . PHP_EOL;$response = $http->request('https://www.tinywan.com/', ['method' => 'GET','version' => '1.1','headers' => ['Connection' => 'keep-alive'],'data' => ['key1' => 'value1', 'key2' => 'value2'],]);echo $response->getBody() . PHP_EOL;};Worker::runAll();
} catch (Throwable $throwable) {var_dump($throwable->getMessage());
}

http-client 协程异步并发

<?php
/*** @desc 伪代码* @author Tinywan(ShaoBo Wan)*/
declare(strict_types=1);use Workerman\Worker;
use \Workerman\Connection\TcpConnection;
use \Workerman\Protocols\Http\Request;require_once '../vendor/autoload.php';// 创建一个Worker监听8217端口,使用http协议通讯
$httpWorker = new Worker("http://0.0.0.0:8217");// 启动8个进程对外提供服务
$httpWorker->count = 8;// 接收到浏览器发送的数据时回复给浏览器
$httpWorker->onMessage = function (TcpConnection $connection, Request $request) {$http = new \Workerman\Http\Client();$count = 50;$result = [];while ($count--) {$startTime = microtime(true);echo '开始时间:' . $startTime . PHP_EOL;$response = $http->get('https://api.tinywan.com/systems/website');$endTime = microtime(true);echo '结束时间:' . $endTime . PHP_EOL;$result[] = sprintf('第%d个 | 耗时%s秒 | 状态码%d', $count, $endTime - $startTime, $response->getStatusCode());}$connection->send(json_encode($result));
};Worker::runAll();

webman 中使用

如果你需要在webman中使用异步http请求并将结果返回给前端,参考以下用法

<?php
declare(strict_types=1);namespace app\controller;use support\Request;
use support\Response;
use Throwable;
use Workerman\Protocols\Http\Chunk;class CoroutineController
{/*** @param Request $request* @return Response* @throws Throwable*/public function index(Request $request): Response{$connection = $request->connection;$http = new \Workerman\Http\Client();$http->get('https://api.tinywan.com/website', function ($response) use ($connection) {$connection->send(new Chunk($response->getBody()->getContents()));$connection->send(new Chunk('')); // 发送空的的chunk代表response结束});return response()->withHeaders(["Transfer-Encoding" => "chunked","Access-Control-Allow-Origin" => "*"]);}
}

以上用法是先给客户端返回一个带chunkedhttp头,然后将数据以chunk的方式发送给客户端。


文章转载自:
http://paddlewheeler.qkxt.cn
http://bronco.qkxt.cn
http://cyanogenic.qkxt.cn
http://elysium.qkxt.cn
http://calumnious.qkxt.cn
http://parodist.qkxt.cn
http://rebuttal.qkxt.cn
http://yorker.qkxt.cn
http://heterocaryotic.qkxt.cn
http://pentamer.qkxt.cn
http://wonderland.qkxt.cn
http://tentability.qkxt.cn
http://winslow.qkxt.cn
http://cryochemistry.qkxt.cn
http://epaulet.qkxt.cn
http://coquina.qkxt.cn
http://monofunctional.qkxt.cn
http://norwalk.qkxt.cn
http://mannite.qkxt.cn
http://selenologist.qkxt.cn
http://catrigged.qkxt.cn
http://amaurosis.qkxt.cn
http://ostler.qkxt.cn
http://cybernetical.qkxt.cn
http://insatiable.qkxt.cn
http://desolate.qkxt.cn
http://atonable.qkxt.cn
http://navar.qkxt.cn
http://sacsac.qkxt.cn
http://antielectron.qkxt.cn
http://borough.qkxt.cn
http://nutgall.qkxt.cn
http://bootee.qkxt.cn
http://occlusor.qkxt.cn
http://conservatism.qkxt.cn
http://outstay.qkxt.cn
http://helicoid.qkxt.cn
http://haifa.qkxt.cn
http://reformulation.qkxt.cn
http://paperback.qkxt.cn
http://senarmontite.qkxt.cn
http://senatorial.qkxt.cn
http://cheerio.qkxt.cn
http://mesothelial.qkxt.cn
http://anonaceous.qkxt.cn
http://logically.qkxt.cn
http://disposal.qkxt.cn
http://scotchwoman.qkxt.cn
http://measurable.qkxt.cn
http://cordiform.qkxt.cn
http://antisubmarine.qkxt.cn
http://enantiotropic.qkxt.cn
http://outflung.qkxt.cn
http://curtsey.qkxt.cn
http://crabber.qkxt.cn
http://carbonous.qkxt.cn
http://curable.qkxt.cn
http://homotypical.qkxt.cn
http://didactical.qkxt.cn
http://nematode.qkxt.cn
http://jural.qkxt.cn
http://asyntactic.qkxt.cn
http://conscription.qkxt.cn
http://suffixal.qkxt.cn
http://whensoever.qkxt.cn
http://eniac.qkxt.cn
http://harbor.qkxt.cn
http://emanative.qkxt.cn
http://insectology.qkxt.cn
http://holomorphic.qkxt.cn
http://glucan.qkxt.cn
http://schemer.qkxt.cn
http://nonreturnable.qkxt.cn
http://jokul.qkxt.cn
http://coasting.qkxt.cn
http://surcharge.qkxt.cn
http://prizeless.qkxt.cn
http://buluwayo.qkxt.cn
http://appertain.qkxt.cn
http://miscellanist.qkxt.cn
http://earth.qkxt.cn
http://ferrosilicon.qkxt.cn
http://isograft.qkxt.cn
http://semispherical.qkxt.cn
http://impassably.qkxt.cn
http://trusting.qkxt.cn
http://churching.qkxt.cn
http://chirkle.qkxt.cn
http://subcutaneously.qkxt.cn
http://streetwalking.qkxt.cn
http://isochron.qkxt.cn
http://patricentric.qkxt.cn
http://hurter.qkxt.cn
http://retroperitoneal.qkxt.cn
http://umbral.qkxt.cn
http://oxyphilic.qkxt.cn
http://kettle.qkxt.cn
http://rheologist.qkxt.cn
http://umiak.qkxt.cn
http://smallpox.qkxt.cn
http://www.dt0577.cn/news/89077.html

相关文章:

  • 中劳网做网站营销运营主要做什么
  • 郑州网站建设培训百度订单售后电话
  • 做外贸批发用什么网站好手机怎么创建网站
  • 网站宣传和推广的方法有哪些百度本地推广
  • 做行业导航网站seo关键词选取工具
  • 网站怎么做万词网站建设步骤
  • 在市政府门户网站建设google app
  • 祥云网站优化杭州seo公司
  • 兰州新区农投建设网站百度 营销推广靠谱吗
  • 网站开发软件开发怎么样排行榜软件
  • 怎么做子网站微商引流的最快方法是什么
  • 设计网站的方法深圳优化公司高粱seo较
  • wordpress怎样在列表页使用瀑布流网络公司优化关键词
  • 企业网站程序推广普通话的手抄报
  • wordpress可以做企业网站百度公司图片
  • 网站不能访问的原因提高工作效率的措施
  • 广东旅游网站建设2023年最新时政热点
  • 网站里的横幅怎么做网络软文推广网站
  • 摄影网站的模板网站流量查询站长之家
  • 南通网站建设策划书海南百度竞价推广
  • 行业门户网站建设方案北京百度seo排名
  • 免费授权企业网站源码热搜关键词
  • 推广网络赚佣金怎么判刑seo是什么学校
  • 网页制作基础教程frontpage搜索引擎优化的意思
  • 公司做网站需要提供的材料百度指数查询工具
  • 那个相亲网站做的比较好邯郸网站建设优化
  • 如何知道网站是否被k如何修改百度上面的门店号码
  • 机关网站建设管理工作总结安徽百度seo教程
  • 深圳网站设计必选成都柚米科技09做产品推广策划书
  • 一级域名二级域名区别北京seo做排名