in reply to Perl fork and http::request

It might also help if you provided us with the errors you are seeing.

Replies are listed 'Best First'.
Re: Re: Perl fork and http::request
by Anonymous Monk on Feb 02, 2001 at 02:18 UTC
    Sorry, that's how you do it....I pasted the code again. Does LWP::Parallel::UserAgent allow me to parse the output, such as extracting links? Is it included with ActivePerl? Couldn't find any information on that. If so, could someone give me an example? Following is the error I get.
    Invoking main::Search error '80004005' fork() is not implemented in PerlScript at (eval 2) line 16. ? error '80004005' Unspecified error /scripts/searchm/search.inc, line 542
    use HTTP::Request::Common; use HTML::Parser; use HTML::TreeBuilder; use LWP::UserAgent; use URI::URL; @longurl = ('http://1.htm', 'http://2.htm', 'http://3.htm'); @longfie = ('PostData1', 'PostData2', 'PostData3'); $sitetotal=2; my $pid = fork; for ($sitenum=0; $sitenum <= $sitetotal; $sitenum++) { if ($pid = fork) { next; } if (defined $pid) { $ua[$sitenum] = new LWP::UserAgent; $ua[$sitenum]->timeout(4); $res[$sitenum] = $ua[$sitenum]->request(POST $longurl[$sitenum], C +ontent => [ DataField => "$longfie[$sitenum]" ] ); if ($res[$sitenum]->is_success) { $p[$sitenum]->parse($res[$sitenum]->content); } $base = $res[$sitenum]->base; $siten = $longsite[$sitenum]; $p[$sitenum]->traverse(\&extract_alinks, 1); exit; } else { die "Fork failed at number $sitenum: $!\n"; } } $returnstring; sub extract_alinks1 { #extract links and add to $returnstring }
      So it looks like your problem is simply the lack of a fork implementation in the version of ActivePerl/"PerlScript" you're using. I believe ActiveState's release of Perl 5.6 includes some emulated fork support that might allow your script to run as you expect, but I still highly recommend using LWP::Parallel for doing parallel web page requests. Click on the link for CPAN documentation. I am not aware if ActivePerl ships with this or not. I suspect it doesn't. Try using PPM to install it. Otherwise, you'll have to build it by hand. Perhaps someone else has more information about this.
        Thanks. I went to the ActiveState.com and it seems parallel::UserAgent is not supported on windows platform. Is there anyway i can get around this? short of changing the OS...