为了账号安全,请及时绑定邮箱和手机立即绑定

CURL在shell下可以用多线程么?

CURL在shell下可以用多线程么?

浮云间 2019-04-09 20:23:45
比如http://a.com/a.phphttp://a.com/b.php同时请求出去试过了PHP下的curl,最多只能到3个request同时发出,而我需要10来个。用途举例:我是用于攻击应用程序的,比如一个论坛有打卡机制,程序设计上每天只能打一次卡,但如果保证有N(N>=1)个打卡的请求同时达到伺服器,极有可能攻击成功。所以,希望各位别说啥这不是多线程呀啥的(multi-threads)。
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

这是多进程吧,连多线程都算不上
PHP的多并发curl请求(curl_multi_系列函数),我记得没有什么限制吧,能贴一下代码上来吗?
shell下执行多个curl当然是多进程。甚至于像网络蚂蚁那样分块HTTP下载单个文件都未必是多线程,因为每个HTTP请求到头来还是单独的。
追究到底是用多进程还是多线程来做并发,无关紧要。但可以肯定的是:无论是用shell还是用php,同时启动多个/usr/bin/curl进程肯定是没问题的。
楼主应该追究的重点,我估计在于如何多个HTTP请求同时发到服务器上。由于连接服务器的时间前后有所不同,所以如果不认真处理,并发的时间一致性恐怕不好。
这个的解决方式是把连接请求一分为二,把创建连接和发送HTTP请求割裂开来操作。做法是让所有的并发端先连接到服务器,待连接全部就绪之后,再一起发送HTTP请求。
这个我查了一下,似乎不是curl能做得到的,需要写程序。
                            
查看完整回答
反对 回复 2019-04-09
?
jeck猫

TA贡献1909条经验 获得超7个赞

这个问题我认为最合适的做法是用xargs的多进程:
先把你的所有url存到一个文件里,比如说urls.txt吧
xargs的-P可以指定最大的进程数。参考manxargs
另外,楼主要测试web程序的话也可以用apacheab的呀。
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 519 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信