我有一个网络服务,我用来提交短信作为批量短信发送。我收到了一个网址,我应该提交短信给发送。
我在csv文件中有数字,我正在以这种方式阅读
$row = 1;
if (($handle = fopen("27k.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . '<br/>';
}
}
fclose($handle);
}
邮件正在逐个提交给Web服务,发送30,000条记录需要数小时。
是否有任何语言的编程结构可用于向Web服务发出30,000个并发请求,而不是一次发送一个文本?
答案 0 :(得分:0)
是的!有许多并发构造可以帮助您:
以上每一项都有自己的权衡。必须考虑线程内存同步(通常通过在具有队列的线程之间传递数据来简化)。
事件循环针对IO进行了优化(对于您的用例应该是完美的),但是代表期货和绕过异步操作的包裹,产生以及事件循环在任何给定时间内处于什么状态可能令人抓狂。
进程间作业队列具有管理队列和工作池的操作开销。
虽然上述任何解决方案都应允许X个并发请求,但绑定资源池通常是一种很好的做法(即限制并发)。如果您启动30,000个并发请求(您的计算机甚至可以启动那么多???)您可以轻松地淹没服务器。如果启动是由最终用户驱动或不受控制的操作,您可以随时轻松启动X * 30000请求。
如果单个请求失败会发生什么?你需要重试吗?什么时候你受到限制?