Convertir un script php en Perl
Bonjour,
J'avais créé un script php afin de récupérer à l'aide d'un REGEX, des URL sur des sites distants. Les url des sites distants sont stockées dans ma base. Une fois les url récupérées sur les sites distants, je récupère les ip des serveurs correspondants aux url extraites.
Le problème est que php traite les données ligne par ligne. J'ai besoin maintenant de connections asynchrone pour traiter par paquet de 20 url à la fois...et je me tourne donc vers PERL. J'ai commencé à lire les tutos, mais je trouve que cela est difficile...
SCRIPT PHP:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| //Fixe le temps maximum d'exécution d'un script et court circuite parametre du serveur
set_time_limit(0);
$filename = "../dbconnect.php";
if (file_exists($filename)) include($filename);
$SelectionDonnees = mysql_query("SELECT url FROM listeUrl") or die('Impossible de récupérer les données dans la base'.mysql_error());
if (mysql_num_rows($req) > 0)
{
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req))
{
$text = file_get_contents("'".$data['url']."'");
//On converti les caractères html < etc...en balise html
$a = html_entity_decode($text);
// extraction ip
$pattern = preg_match_all(
'#(<a>|<li>|value=")([a-z0-9]{0,}-?){1,}(\.[a-z0-9]{1,}){1,4}#i',
$a,
$match2
);
if ($pattern)
{
foreach($match2[0] as $resultat)
{
list($value, $url) = split('[">]', $resultat);
//$ip = gethostbyname($url);
echo "Url extraite :$url et IP= $ip<br>";
$insertBase = mysql_real_escape_string(mysql_query("INSERT IGNORE INTO listeIp (Ipadress, port, url, InsertDate) VALUES ('$ip', '$port', '$url', now())")) or die ('Erreur SQL...veuillez contacter l\'administrateur'.mysql_error());
}
}
}
} |
Voici le début du script en perl:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/usr/bin/perl -w
use strict;
use warnings;
use DBI;
use LWP::Simple;
use URI::URL;
#Params=================
my $urllimit = '20'; #nombre d'url à tester
my $sqlhost="localhost"; # mysql server
my $sqluser = ""; #pseudo mysql
my $sqlpass = ""; #mot de passe root?
my $sqldb = ""; #ip adress db
my $sqltable = "listeUrl";
#Fin params=============
$dbh = DBI->connect("DBI:mysql:database=$sqldb:host=$sqlhost",$sqluser,$sqlpass) or die ("Impossible de se connecter à la base");
$sel = $dbh->prepare("select url FROM listeUrl");
$sel->execute() or die "Impossible de récupérer les URL de la base. : $DBI::errstr";
while(($jenesaispas) $sel->fetchrow_array){
{
my $url = url('$jenesaispas') ;
$contenu = get($url);
}
$sel->finish;
$dbh->disconnect(); |
Ce début de script est il déjà juste pour le moment?
Merci