向Web服务提交多个号码

时间:2017-05-02 12:38:03

标签: concurrency

我有一个网络服务,我用来提交短信作为批量短信发送。我收到了一个网址,我应该提交短信给发送。

我在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个并发请求,而不是一次发送一个文本?

1 个答案:

答案 0 :(得分:0)

是的!有许多并发构造可以帮助您:

以上每一项都有自己的权衡。必须考虑线程内存同步(通常通过在具有队列的线程之间传递数据来简化)。

事件循环针对IO进行了优化(对于您的用例应该是完美的),但是代表期货和绕过异步操作的包裹,产生以及事件循环在任何给定时间内处于什么状态可能令人抓狂。

进程间作业队列具有管理队列和工作池的操作开销。

虽然上述任何解决方案都应允许X个并发请求,但绑定资源池通常是一种很好的做法(即限制并发)。如果您启动30,000个并发请求(您的计算机甚至可以启动那么多???)您可以轻松地淹没服务器。如果启动是由最终用户驱动或不受控制的操作,您可以随时轻松启动X * 30000请求。

如果单个请求失败会发生什么?你需要重试吗?什么时候你受到限制?