<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function () {
$http = new Workerman\Http\Client();
$start_time = microtime(true);
echo '开始时间' . $start_time . PHP_EOL;
$num = 200;
$result = [];
while ($num--) {
$http->get('https://example.com/', function ($response) use ($start_time, $num, &$result) {
//var_dump($response->getStatusCode());
//echo $response->getBody();
$result[$num] = sprintf('第%d个 | 耗时%s秒 | 状态码%d', $num, microtime(true) - $start_time, $response->getStatusCode());
if (200 === count($result)) {
print_r($result);
echo '请求完成,总耗时' . (microtime(true) - $start_time) . PHP_EOL;
}
}, function ($exception) {
echo $exception;
});
}
$end_time = microtime(true);
echo '结束时间' . $end_time . PHP_EOL;
};
Worker::runAll();
200个并发请求,总耗时213.22毫秒,平均到每个请求1ms左右
---------------------------------------------- WORKERMAN -----------------------------------------------
Workerman version:5.0.0-beta.7 PHP version:8.3.0
----------------------------------------------- WORKERS ------------------------------------------------
worker listen processes status
none none 1 [ok]
开始时间1702618005.9973
结束时间1702618006.0564
Array
(
[92] => 第92个 | 耗时0.16888999938965秒 | 状态码200
[90] => 第90个 | 耗时0.16899704933167秒 | 状态码200
[96] => 第96个 | 耗时0.17014193534851秒 | 状态码200
[95] => 第95个 | 耗时0.17020297050476秒 | 状态码200
[93] => 第93个 | 耗时0.17025685310364秒 | 状态码200
[88] => 第88个 | 耗时0.17029881477356秒 | 状态码200
[80] => 第80个 | 耗时0.17034387588501秒 | 状态码200
[78] => 第78个 | 耗时0.17038583755493秒 | 状态码200
[83] => 第83个 | 耗时0.17101693153381秒 | 状态码200
[82] => 第82个 | 耗时0.17106604576111秒 | 状态码200
[91] => 第91个 | 耗时0.17197799682617秒 | 状态码200
[89] => 第89个 | 耗时0.17203497886658秒 | 状态码200
[94] => 第94个 | 耗时0.17486596107483秒 | 状态码200
[86] => 第86个 | 耗时0.17539691925049秒 | 状态码200
[81] => 第81个 | 耗时0.1758189201355秒 | 状态码200
[79] => 第79个 | 耗时0.17652988433838秒 | 状态码200
[72] => 第72个 | 耗时0.17682003974915秒 | 状态码200
[73] => 第73个 | 耗时0.17745304107666秒 | 状态码200
[84] => 第84个 | 耗时0.17778086662292秒 | 状态码200
[87] => 第87个 | 耗时0.1780378818512秒 | 状态码200
[85] => 第85个 | 耗时0.17808198928833秒 | 状态码200
[76] => 第76个 | 耗时0.17965698242188秒 | 状态码200
[199] => 第199个 | 耗时0.18000984191895秒 | 状态码200
[192] => 第192个 | 耗时0.18026304244995秒 | 状态码200
[74] => 第74个 | 耗时0.18072390556335秒 | 状态码200
[196] => 第196个 | 耗时0.18092489242554秒 | 状态码200
[77] => 第77个 | 耗时0.18111300468445秒 | 状态码200
[195] => 第195个 | 耗时0.18150281906128秒 | 状态码200
[198] => 第198个 | 耗时0.18170404434204秒 | 状态码200
[197] => 第197个 | 耗时0.1820969581604秒 | 状态码200
[75] => 第75个 | 耗时0.18214392662048秒 | 状态码200
[190] => 第190个 | 耗时0.18248987197876秒 | 状态码200
[191] => 第191个 | 耗时0.18266296386719秒 | 状态码200
[182] => 第182个 | 耗时0.18316888809204秒 | 状态码200
[187] => 第187个 | 耗时0.18334603309631秒 | 状态码200
[184] => 第184个 | 耗时0.18354201316833秒 | 状态码200
[183] => 第183个 | 耗时0.1837329864502秒 | 状态码200
[188] => 第188个 | 耗时0.18419885635376秒 | 状态码200
[193] => 第193个 | 耗时0.18490695953369秒 | 状态码200
[189] => 第189个 | 耗时0.18512392044067秒 | 状态码200
[176] => 第176个 | 耗时0.1851749420166秒 | 状态码200
[71] => 第71个 | 耗时0.18521904945374秒 | 状态码200
[194] => 第194个 | 耗时0.18545699119568秒 | 状态码200
[70] => 第70个 | 耗时0.18550491333008秒 | 状态码200
[181] => 第181个 | 耗时0.18573188781738秒 | 状态码200
[171] => 第171个 | 耗时0.18619894981384秒 | 状态码200
[66] => 第66个 | 耗时0.18738484382629秒 | 状态码200
[169] => 第169个 | 耗时0.18759489059448秒 | 状态码200
[164] => 第164个 | 耗时0.18764185905457秒 | 状态码200
[185] => 第185个 | 耗时0.18785691261292秒 | 状态码200
[162] => 第162个 | 耗时0.18790102005005秒 | 状态码200
[141] => 第141个 | 耗时0.18793988227844秒 | 状态码200
[186] => 第186个 | 耗时0.1881468296051秒 | 状态码200
[180] => 第180个 | 耗时0.18818783760071秒 | 状态码200
[175] => 第175个 | 耗时0.18822693824768秒 | 状态码200
[167] => 第167个 | 耗时0.18826699256897秒 | 状态码200
[178] => 第178个 | 耗时0.18848085403442秒 | 状态码200
[172] => 第172个 | 耗时0.18852281570435秒 | 状态码200
[157] => 第157个 | 耗时0.18856382369995秒 | 状态码200
[150] => 第150个 | 耗时0.18860483169556秒 | 状态码200
[139] => 第139个 | 耗时0.18882393836975秒 | 状态码200
[174] => 第174个 | 耗时0.18903398513794秒 | 状态码200
[170] => 第170个 | 耗时0.18907594680786秒 | 状态码200
[165] => 第165个 | 耗时0.18911695480347秒 | 状态码200
[154] => 第154个 | 耗时0.18915390968323秒 | 状态码200
[153] => 第153个 | 耗时0.18934488296509秒 | 状态码200
[177] => 第177个 | 耗时0.18971800804138秒 | 状态码200
[173] => 第173个 | 耗时0.18976283073425秒 | 状态码200
[160] => 第160个 | 耗时0.18980288505554秒 | 状态码200
[168] => 第168个 | 耗时0.18998885154724秒 | 状态码200
[166] => 第166个 | 耗时0.19003081321716秒 | 状态码200
[161] => 第161个 | 耗时0.19007086753845秒 | 状态码200
[145] => 第145个 | 耗时0.1900999546051秒 | 状态码200
[179] => 第179个 | 耗时0.19045090675354秒 | 状态码200
[163] => 第163个 | 耗时0.19047784805298秒 | 状态码200
[147] => 第147个 | 耗时0.19062399864197秒 | 状态码200
[143] => 第143个 | 耗时0.19064903259277秒 | 状态码200
[158] => 第158个 | 耗时0.19091296195984秒 | 状态码200
[155] => 第155个 | 耗时0.19108104705811秒 | 状态码200
[146] => 第146个 | 耗时0.19149994850159秒 | 状态码200
[156] => 第156个 | 耗时0.19176387786865秒 | 状态码200
[152] => 第152个 | 耗时0.19178891181946秒 | 状态码200
[134] => 第134个 | 耗时0.19181299209595秒 | 状态码200
[128] => 第128个 | 耗时0.19195604324341秒 | 状态码200
[148] => 第148个 | 耗时0.19221496582031秒 | 状态码200
[65] => 第65个 | 耗时0.19224095344543秒 | 状态码200
[140] => 第140个 | 耗时0.19250082969666秒 | 状态码200
[159] => 第159个 | 耗时0.19264388084412秒 | 状态码200
[127] => 第127个 | 耗时0.19266796112061秒 | 状态码200
[121] => 第121个 | 耗时0.19303894042969秒 | 状态码200
[131] => 第131个 | 耗时0.19329786300659秒 | 状态码200
[64] => 第64个 | 耗时0.1933228969574秒 | 状态码200
[118] => 第118个 | 耗时0.1937370300293秒 | 状态码200
[144] => 第144个 | 耗时0.19399690628052秒 | 状态码200
[151] => 第151个 | 耗时0.19413805007935秒 | 状态码200
[105] => 第105个 | 耗时0.19441390037537秒 | 状态码200
[103] => 第103个 | 耗时0.19467091560364秒 | 状态码200
[112] => 第112个 | 耗时0.19481492042542秒 | 状态码200
[110] => 第110个 | 耗时0.19507598876953秒 | 状态码200
[129] => 第129个 | 耗时0.19521903991699秒 | 状态码200
[115] => 第115个 | 耗时0.19524192810059秒 | 状态码200
[107] => 第107个 | 耗时0.19526386260986秒 | 状态码200
[102] => 第102个 | 耗时0.19541192054749秒 | 状态码200
[149] => 第149个 | 耗时0.19555592536926秒 | 状态码200
[138] => 第138个 | 耗时0.19569802284241秒 | 状态码200
[137] => 第137个 | 耗时0.19571900367737秒 | 状态码200
[114] => 第114个 | 耗时0.19585990905762秒 | 状态码200
[111] => 第111个 | 耗时0.19588184356689秒 | 状态码200
[130] => 第130个 | 耗时0.19613695144653秒 | 状态码200
[123] => 第123个 | 耗时0.19628691673279秒 | 状态码200
[142] => 第142个 | 耗时0.19655203819275秒 | 状态码200
[108] => 第108个 | 耗时0.19657397270203秒 | 状态码200
[106] => 第106个 | 耗时0.19659495353699秒 | 状态码200
[136] => 第136个 | 耗时0.19673490524292秒 | 状态码200
[125] => 第125个 | 耗时0.1967568397522秒 | 状态码200
[98] => 第98个 | 耗时0.19677901268005秒 | 状态码200
[49] => 第49个 | 耗时0.19692492485046秒 | 状态码200
[117] => 第117个 | 耗时0.19694685935974秒 | 状态码200
[116] => 第116个 | 耗时0.19783091545105秒 | 状态码200
[113] => 第113个 | 耗时0.19886898994446秒 | 状态码200
[109] => 第109个 | 耗时0.19922590255737秒 | 状态码200
[39] => 第39个 | 耗时0.19949889183044秒 | 状态码200
[42] => 第42个 | 耗时0.19976782798767秒 | 状态码200
[48] => 第48个 | 耗时0.19979596138秒 | 状态码200
[37] => 第37个 | 耗时0.19982194900513秒 | 状态码200
[38] => 第38个 | 耗时0.19984698295593秒 | 状态码200
[124] => 第124个 | 耗时0.19987082481384秒 | 状态码200
[46] => 第46个 | 耗时0.20001792907715秒 | 状态码200
[44] => 第44个 | 耗时0.20004200935364秒 | 状态码200
[122] => 第122个 | 耗时0.20006585121155秒 | 状态码200
[119] => 第119个 | 耗时0.2000880241394秒 | 状态码200
[43] => 第43个 | 耗时0.20023393630981秒 | 状态码200
[40] => 第40个 | 耗时0.20025682449341秒 | 状态码200
[99] => 第99个 | 耗时0.20027899742126秒 | 状态码200
[57] => 第57个 | 耗时0.20030283927917秒 | 状态码200
[35] => 第35个 | 耗时0.20045399665833秒 | 状态码200
[100] => 第100个 | 耗时0.20047688484192秒 | 状态码200
[97] => 第97个 | 耗时0.2004988193512秒 | 状态码200
[67] => 第67个 | 耗时0.20052099227905秒 | 状态码200
[61] => 第61个 | 耗时0.20054388046265秒 | 状态码200
[58] => 第58个 | 耗时0.20056581497192秒 | 状态码200
[55] => 第55个 | 耗时0.2005889415741秒 | 状态码200
[36] => 第36个 | 耗时0.20073699951172秒 | 状态码200
[135] => 第135个 | 耗时0.20075988769531秒 | 状态码200
[104] => 第104个 | 耗时0.20078086853027秒 | 状态码200
[101] => 第101个 | 耗时0.20080184936523秒 | 状态码200
[68] => 第68个 | 耗时0.20082402229309秒 | 状态码200
[132] => 第132个 | 耗时0.20096898078918秒 | 状态码200
[69] => 第69个 | 耗时0.20098996162415秒 | 状态码200
[60] => 第60个 | 耗时0.20101284980774秒 | 状态码200
[63] => 第63个 | 耗时0.2010350227356秒 | 状态码200
[54] => 第54个 | 耗时0.20105791091919秒 | 状态码200
[34] => 第34个 | 耗时0.2012050151825秒 | 状态码200
[133] => 第133个 | 耗时0.20122885704041秒 | 状态码200
[126] => 第126个 | 耗时0.20124983787537秒 | 状态码200
[120] => 第120个 | 耗时0.20127081871033秒 | 状态码200
[59] => 第59个 | 耗时0.20129299163818秒 | 状态码200
[62] => 第62个 | 耗时0.20131492614746秒 | 状态码200
[56] => 第56个 | 耗时0.20134091377258秒 | 状态码200
[27] => 第27个 | 耗时0.20148801803589秒 | 状态码200
[50] => 第50个 | 耗时0.20151400566101秒 | 状态码200
[53] => 第53个 | 耗时0.20165801048279秒 | 状态码200
[31] => 第31个 | 耗时0.20179891586304秒 | 状态码200
[52] => 第52个 | 耗时0.201819896698秒 | 状态码200
[30] => 第30个 | 耗时0.20208096504211秒 | 状态码200
[25] => 第25个 | 耗时0.2021050453186秒 | 状态码200
[45] => 第45个 | 耗时0.20212888717651秒 | 状态码200
[41] => 第41个 | 耗时0.20215201377869秒 | 状态码200
[47] => 第47个 | 耗时0.20219683647156秒 | 状态码200
[26] => 第26个 | 耗时0.20235085487366秒 | 状态码200
[51] => 第51个 | 耗时0.20237398147583秒 | 状态码200
[32] => 第32个 | 耗时0.20263600349426秒 | 状态码200
[20] => 第20个 | 耗时0.20293283462524秒 | 状态码200
[33] => 第33个 | 耗时0.20319700241089秒 | 状态码200
[11] => 第11个 | 耗时0.2032208442688秒 | 状态码200
[17] => 第17个 | 耗时0.20336890220642秒 | 状态码200
[13] => 第13个 | 耗时0.20339202880859秒 | 状态码200
[29] => 第29个 | 耗时0.20365190505981秒 | 状态码200
[16] => 第16个 | 耗时0.20367789268494秒 | 状态码200
[23] => 第23个 | 耗时0.20381999015808秒 | 状态码200
[21] => 第21个 | 耗时0.20384192466736秒 | 状态码200
[28] => 第28个 | 耗时0.20386505126953秒 | 状态码200
[9] => 第9个 | 耗时0.20400786399841秒 | 状态码200
[12] => 第12个 | 耗时0.2040319442749秒 | 状态码200
[22] => 第22个 | 耗时0.20429396629333秒 | 状态码200
[24] => 第24个 | 耗时0.20431804656982秒 | 状态码200
[19] => 第19个 | 耗时0.20446801185608秒 | 状态码200
[18] => 第18个 | 耗时0.20449304580688秒 | 状态码200
[14] => 第14个 | 耗时0.20486402511597秒 | 状态码200
[15] => 第15个 | 耗时0.2051260471344秒 | 状态码200
[7] => 第7个 | 耗时0.20514893531799秒 | 状态码200
[8] => 第8个 | 耗时0.20528984069824秒 | 状态码200
[6] => 第6个 | 耗时0.2053120136261秒 | 状态码200
[1] => 第1个 | 耗时0.20559191703796秒 | 状态码200
[3] => 第3个 | 耗时0.20561790466309秒 | 状态码200
[10] => 第10个 | 耗时0.20611596107483秒 | 状态码200
[5] => 第5个 | 耗时0.20638394355774秒 | 状态码200
[4] => 第4个 | 耗时0.20664882659912秒 | 状态码200
[0] => 第0个 | 耗时0.20667481422424秒 | 状态码200
[2] => 第2个 | 耗时0.20694398880005秒 | 状态码200
)
请求完成,总耗时0.21322989463806
并发协程真酷,让我想起以前用易语言批量多线程注册账号的时候。😁
先留着,还没开始整
大佬整个mysql的协程吧 这个curl用的不是很多
异步回调语法,不是真正的协程
你这是异步的,不是协程
workerman/http-client是一个异步http客户端组件。所有请求响应异步非阻塞,内置连接池,消息请求和响应符合PSR7规范。
赞
这不是 guzzle 的 Promise 一样吗