Hi all,

Hopefully someone can give me a clue about a problem I'm having. I'm using the script 
below to try to retrieve the web page 
"http://inventory.overture.com/d/searchinventory/suggestion/?term="; with a term 
attached at the end of it. This script has been working for months and is all of a 
sudden returning: "500 (Internal Server Error) Can't connect to 
inventory.overture.com:80 (Timeout)"

I can connect to other sites without a problem such as yahoo.com.

Does anyone know why something like this might suddenly be taking place after such a 
long time of working flawlessly? Could it be something has been changed at the web 
site I'm trying to get?

Thanks so much in advance.

Guy Davis





#!/usr/bin/perl 

use strict;
use DBI;
use LWP::UserAgent;

# test to make sure they entered one or two arguments
if($#ARGV != 0)
{
  print "\nUsage: getraffic.pl research_run_id\n\n";
  exit();
}

# We need to subclass LWP::UserAgent in order to allow redirects on POSTS
# and fix some other problems. In other words, to make it behave like a
# 'real' web browser
@MyAgent::ISA = qw(LWP::UserAgent);
sub MyAgent::redirect_ok {
my ($self,$request)=@_;

# *****************************************************
# IMPORTANT:
#
# POSTs that get redirected __MUST__ change the request
# method to GET!!!!
# *****************************************************
if ($request->method eq "POST") {
$request->method("GET");
}
return 1;
}

# what client do you want to get?  first variable from the command line
my $test_phrase = "";
my $research_id = $ARGV[0];
my $VERBOSE     = 1;

my $db = DB_connect();
my ($rp_id, $rp_phrase_name);
my $sql = "";
my $sth;

# Getting started - actively checking for traffic
$sql = "UPDATE research SET research_traffic_updated=1
        WHERE research_id=$research_id";
$sth = $db->prepare( $sql );
$sth->execute() || die ( $DBI::errstr );
        
$sql = "SELECT rp_id, rp_phrase_name FROM researchphrase
        WHERE rp_research_id=$research_id AND rp_status<>2 AND rp_clicks IS NULL";
                
$sth = $db->prepare( $sql );
$sth->execute() || die ( $DBI::errstr );
$sth->bind_columns(undef, \($rp_id, $rp_phrase_name));
while ($sth->fetch()) { # update each phrase
    my $kw = $rp_phrase_name;
        $kw =~ s/ /+/g;
        
        gettraffic($rp_id, $rp_phrase_name, $kw);
}

# All done - not actively checking for traffic
$sql = "UPDATE research SET research_traffic_updated=0
        WHERE research_id=$research_id";
$sth = $db->prepare( $sql );
$sth->execute() || die ( $DBI::errstr );
        
$sth->finish();
# now disconnect from the database
$db->disconnect();

sub gettraffic {
        my ($rp_id, $rp_phrase_name, $keyword) = @_;
        my $traffic=0;

        my $url         = 
"http://inventory.overture.com/d/searchinventory/suggestion/?term="; . $keyword;
        my $ua          = new MyAgent;
        my $agent       = 'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)';

        ## Set some User Agent properties.
        $ua->agent($agent);
        $ua->timeout(15);

        ## Convert the URL into a url object (with a couple methods we can use).
        my $u =  new URI::URL( $url );
        
        ## Fetch the web page.
        my $req = HTTP::Request->new(GET=>$u->as_string);
        my $res = $ua->request($req);
        my $resstring = $res->as_string;
        
        print "URL: $url\n" if ($VERBOSE);
        print "$resstring\n" if ($VERBOSE);

        # Check the outcome of the response
        if ($res->is_success) {
                my $content = $res->content;
                $content =~ m/.*&nbsp;([0-9]+)<\/b>.*/s;
                my $traffic = $1;
                if (!$traffic) {
                        $traffic = 0;
                }
                
                update_db($rp_id, $traffic);
        } 
}

sub update_db {
        my ($rphraseid, $traffic) = @_;
        
        my $sql = "UPDATE researchphrase SET rp_clicks=$traffic WHERE 
rp_id=$rphraseid";
        my $sth = $db->prepare( $sql );
        $sth->execute() || die( $DBI::errstr );
        $sth->finish();
}

sub DB_connect {
        my $table = shift;
        my $db = DBI->connect("DBI:mysql:database",  "username", "password", 
{PrintError=>0, RaiseError=>0});
        return $db || "DBERROR: Could not connect to database.";
}


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to