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

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

比如

http://a.com/a.php
http://a.com/b.php
同时请求出去

试过了PHP下的curl,最多只能到3个request同时发出,而我需要10来个。

用途举例:

我是用于攻击应用程序的,比如一个论坛有打卡机制,程序设计上每天只能打一次卡,
但如果保证有N ( N >= 1 )个打卡的请求同时达到伺服器,极有可能攻击成功。

所以,希望各位别说啥这不是多线程呀啥的(multi-threads)。


这个问题我认为最合适的做法是用 xargs 的多进程:

先把你的所有 url 存到一个文件里,比如说 urls.txt 吧

< urls.txt xargs -r -L 1 -P 10 curl

xargs 的 -P 可以指定最大的进程数。参考 man xargs

另外,楼主要测试 web 程序的话也可以用 apache ab 的呀。


这是多进程吧,连多线程都算不上

PHP的多并发curl请求(curl_multi_系列函数),我记得没有什么限制吧,能贴一下代码上来吗?


shell下执行多个curl当然是多进程。甚至于像网络蚂蚁那样分块HTTP下载单个文件都未必是多线程,因为每个HTTP请求到头来还是单独的。

追究到底是用多进程还是多线程来做并发,无关紧要。但可以肯定的是:无论是用shell还是用php,同时启动多个/usr/bin/curl进程肯定是没问题的。

楼主应该追究的重点,我估计在于如何多个HTTP请求同时发到服务器上。由于连接服务器的时间前后有所不同,所以如果不认真处理,并发的时间一致性恐怕不好。

这个的解决方式是把连接请求一分为二,把创建连接发送HTTP请求割裂开来操作。做法是让所有的并发端先连接到服务器,待连接全部就绪之后,再一起发送HTTP请求。

这个我查了一下,似乎不是curl能做得到的,需要写程序。

【热门文章】
【热门文章】