あなたはパラレル検索を行いたい場合は、あなたがNet::DNS
やAnyEvent::DNSをチェックアウトに含まれdemo scriptを使用することができます。
後者は、このモジュールは、DNSの便利な機能の数だけでなく、完全に非同期で高性能純粋-perlのスタブリゾルバの両方を提供
提供します。
私はそれを使用していないが、IO::Lambda::DNSは、パラレルクエリを行うことができるようになる。これらのモジュールを使用して
# parallel async queries
lambda {
for my $site (map { "www.$_.com" } qw(google yahoo perl)) {
context $site, 'MX', timeout => 0.25;
dns { print shift-> string if ref($_[0]) }
}
}-> wait;
は手でフォークを管理することが好ましいかもしれません。
あなたのご意見に基づいて、私はあなたが何を言おうとしていたか誤解している可能性があります。多分これは役立ちます:
#!/usr/bin/env perl
use strict; use warnings;
use AnyEvent::DNS;
use AnyEvent::Socket;
use YAML;
my %nameservers = (
'Google' => '8.8.4.4',
'Dnsadvantage' => '156.154.71.1',
'OpenDNS' => '208.67.222.222',
'Norton' => '198.153.194.1',
'Verizon' => '4.2.2.4',
'ScrubIt' => '207.225.209.66',
);
for my $ip (values %nameservers) {
$ip = AnyEvent::DNS->new(
server => [ parse_address($_) ],
timeout => [3],
);
}
my @domains = qw(example.com cnn.com bing.com);
my $cv = AnyEvent->condvar;
for my $domain (@domains) {
for my $ns (keys %nameservers) {
$cv->begin;
$nameservers{$ns}->resolve(
$domain, 'a', sub {
$cv->end;
print Dump { $ns => [ @{$_[0]}[0,4] ] };
}
);
}
}
$cv->recv;
出力:あなたがUnixシステムのいくつかの種類にしている場合は
---
ScrubIt:
- example.com
- 192.0.43.10
---
ScrubIt:
- cnn.com
- 157.166.226.26
---
Norton:
- example.com
- 192.0.43.10
---
OpenDNS:
- example.com
- 192.0.43.10
---
Dnsadvantage:
- example.com
- 192.0.43.10
---
Verizon:
- example.com
- 192.0.43.10
---
Google:
- example.com
- 192.0.43.10
---
ScrubIt:
- bing.com
- 65.52.107.149
---
Norton:
- cnn.com
- 157.166.255.18
---
OpenDNS:
- cnn.com
- 157.166.255.19
---
Dnsadvantage:
- cnn.com
- 157.166.226.25
---
Verizon:
- cnn.com
- 157.166.226.26
---
Google:
- cnn.com
- 157.166.255.18
---
Norton:
- bing.com
- 65.52.107.149
---
OpenDNS:
- bing.com
- 65.52.107.149
---
Dnsadvantage:
- bing.com
- 65.52.107.149
---
Verizon:
- bing.com
- 65.52.107.149
---
Google:
- bing.com
- 65.52.107.149
私はwaitpidを使用しますが、それは174または226で停止します。私は4000プロセスをフォークする必要があります。 – cppcoder
「または」?プログラム上の他の制約を探します。コンピュータリソースはまったく無制限ではありません。あなたはおそらく*何かを使い果たしているかもしれません。私はそれが何であるかを言うには十分な情報がありません。そして、私はまだあなたがそれをやっているOSが分からないので、限界がどんなものであろうとも考えていません。 – geekosaur