V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sxbxjhwm  ›  全部回复第 7 页 / 共 11 页
回复总数  213
1  2  3  4  5  6  7  8  9  10 ... 11  
2021-05-10 09:04:45 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 curl_multi_exec 输出之前都可以抽出来作为 push 方法的内容,sleep 那部分是假装你执行自己需要的功能,sleep 之后是真正的 exec
2021-05-10 02:26:47 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 https://gist.github.com/jshensh/b7f05cc2e1ebf600a1eedbf4a30bc346

我这边比较偷懒是直接在原来 Multi 类的基础上修改的,而且因为我原先的设计返回数据的 key 需要与传入的 key 对应,用了 next 直接操作数组内部指针,生怕追加任务指针会被 reset,所以就没有给 class 再加 push 方法,理论上后续再加,再次执行 exec 都是没问题的。我这边输出的结果很明显的展示了在执行 curl_multi_exec 后进行任意操作都不会影响已发出的请求,传入 callback 也可以预处理每一个返回值,至于并发控制这块,因为需要达到精准控制数量所以只能写在 while 段里所以不能很好的避免阻塞:

root@debian:~/php-curl-class# php test.php
Start: 1620584188.6943
curl_multi_exec: 1620584188.6959
sleep: 1620584191.6963
test1 received data at: 1620584193.697
test3 received data at: 1620584193.6971
test4 received data at: 1620584193.6979
test2 received data at: 1620584193.6989
test5 received data at: 1620584198.6994
test6 received data at: 1620584198.6994
test7 received data at: 1620584198.7006
test8 received data at: 1620584198.7009
array(8) {
["test1"]=>
string(40) "strlen: 259 data: float(1620584193.6961)"
["test3"]=>
string(40) "strlen: 259 data: float(1620584193.6966)"
["test4"]=>
string(40) "strlen: 259 data: float(1620584193.6969)"
["test2"]=>
string(40) "strlen: 259 data: float(1620584193.6965)"
["test5"]=>
string(40) "strlen: 259 data: float(1620584198.6985)"
["test6"]=>
string(39) "strlen: 258 data: float(1620584198.699)"
["test7"]=>
string(40) "strlen: 259 data: float(1620584198.6994)"
["test8"]=>
string(37) "strlen: 256 data: float(1620584198.7)"
}
Done: 1620584198.7015
2021-05-08 18:28:26 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 等周一吧,我发个 gist
2021-05-08 17:39:16 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 curl_multi_exec 本来就是 while 在一直调用的,它只是启动这个栈中所有的 curl 句柄而已 https://www.php.net/manual/zh/function.curl-multi-exec.php ,限制并发相关的源码在我之前贴的 GitHub 链接里其实都有,如果你实际测试一下就会发现它也能很好做到并发控制与重试的。
2021-05-08 16:09:40 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 你没看我封装的源码。。我实现了请求错误时的重试机制,原理就是在 exec 后继续使用 curl_multi_add_handle 向栈里推句柄实现的
2021-05-08 15:43:20 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 你是希望预处理数据返回阿,那 curl_multi_info_read 和 curl_multi_getcontent 完全可以满足你的需求的,具体可以看这一段 https://github.com/jshensh/php-curl-class/blob/master/src/Multi.php#L118-L129 。我在这里就是将原有的 curl 句柄进行处理后放在待返回的数组里最后统一扔出来的。如果需要更细致的并发我可能就是采用 pcntl_ 系列方法处理了
2021-05-08 15:35:46 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 curl_multi_exec 通过第二个引用传参 &$still_running 来告诉你栈中还有多少正在执行的 curl 句柄。阻塞的是后续获取的那部分 while 段源码,它通过判断 $still_running 来确认有没有全部执行完,同时在 while 循环体内也有通过 curl_multi_exec 对 $still_running 重新赋值的操作,所以在什么阻塞获取是完全可以由你自己决定的。
2021-05-08 15:28:25 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 curl_multi_exec 不是阻塞的,后续的获取可以分开写,你是想单独先抽某个结果出来用还是?
2021-05-08 15:19:56 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 curl_multi_exec 执行完后直接干别的就可以了阿,判断和获取主要在这段上 https://github.com/jshensh/php-curl-class/blob/master/src/Multi.php#L110-L152
2021-05-08 15:12:37 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
我前阵子也封装了一个。。不过是基于 curl_multi 的
https://github.com/jshensh/php-curl-class#%E5%B9%B6%E5%8F%91%E8%AF%B7%E6%B1%82
2021-05-08 12:23:33 +08:00
回复了 94 创建的主题 全球工单系统 关于麦当劳小程序的吐槽
https://i.imgur.com/uXmUmrU.png
麦当劳 app,服务器时间快十分钟,下单时间用的 GMT +8,支付时间用的 GMT
2021-04-26 10:27:23 +08:00
回复了 ccming 创建的主题 宽带症候群 上海电信,如果光猫不桥接, LAN 能获得 IPv6 吗?
闺蜜家烽火 sdn 猫路由模式表示用两三天就会不定时死机,我是接宽带第一天就改桥接让小工帮忙把猫给换了的
2021-04-02 13:12:13 +08:00
回复了 icemanpro 创建的主题 Vue.js 打开其它网站时,如何修改请求头?
自己搭一个反向代理
2021-04-01 09:45:09 +08:00
回复了 sxbxjhwm 创建的主题 全球工单系统 如何在使用 cloudflare 的基础上进行双向 tls 验证
@eason1874 好像挺有意思的,我去研究研究,估计改造起来挺麻烦的,那业务一半都是操作证书的,本身有一套的签发吊销续签功能,改的话估计都得改成调 api
2021-03-31 21:32:37 +08:00
回复了 sxbxjhwm 创建的主题 全球工单系统 如何在使用 cloudflare 的基础上进行双向 tls 验证
@eason1874 😂阿里云看过了,有个 scdn 要六千多一个月。。域名数 20 还不给改
2021-03-31 21:27:47 +08:00
回复了 sxbxjhwm 创建的主题 全球工单系统 如何在使用 cloudflare 的基础上进行双向 tls 验证
@ruixue @ZeroClover 不太放心把客户 dn 信息放 cf

@9yu 了解了我看一下谢谢
2021-03-05 17:20:41 +08:00
回复了 awt 创建的主题 宽带症候群 想询问一下大家的光纤 PON 接入类型
@fruitscandy 记错了记错了是 EPON
2021-02-27 23:26:03 +08:00
回复了 awt 创建的主题 宽带症候群 想询问一下大家的光纤 PON 接入类型
上海电信 FTTH GPON 200m 十全十美套餐
小米 6,我家老人还在的最后那三年一直在用。我自己手上的小米 8 用了两年半,现在换了 11
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2675 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 14:01 · PVG 22:01 · LAX 06:01 · JFK 09:01
♥ Do have faith in what you're doing.