php 协程扩展,php协程异步扩展swoole使用

ubuntu 20.04 php7.4编译安装swoole:apt install php-cli php-dev libcurl4-openssl-dev

wget https://github.com/swoole/swoole-src/archive/v4.6.1.tar.gz

./configure --enable-openssl --enable-http2 --enable-swoole-curl

make && make install

echo 'extension=swoole.so' > /etc/php/7.4/cli/conf.d/20-swoole.ini

php --ri swoole

swoole原生协程http客户端:<?php

//Co::set(['hook_flags' => SWOOLE_HOOK_ALL]);

Co\run(function () {

$wg = new \Swoole\Coroutine\WaitGroup();

$result = [];

for ($i = 1; $i <= 10; $i++) {

$wg->add();

go(function () use ($i, $wg, &$result) {

$cli = new Swoole\Coroutine\Http\Client('www.baidu.com', 80);

$cli->set(['timeout' => 10]);

$cli->setHeaders([

'Host' => 'www.baidu.com',

'User-Agent' => 'Mozilla/5.0 Firefox/78.0',

]);

$cli->get('/');

$result[$i] = $cli->getStatusCode();

$cli->close();

$wg->done();

});

}

$wg->wait();

var_dump($result);

});

以hook方式协程运行php curl:<?php

//Co::set(['hook_flags' => SWOOLE_HOOK_ALL]);

Co\run(function () {

$chan = new Swoole\Coroutine\Channel(10);

for ($i = 1; $i <= 10; $i++) {

go(function () use ($i, $chan) {

$header = array(

'User-Agent: Mozilla/5.0 Firefox/78.0'

);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com");

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_exec($ch);

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

$chan->push(['index' => $i, 'code' => $code]);

});

}

for ($i = 1; $i <= 10; $i++) {

$res = $chan->pop();

var_dump($res);

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值