IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Convertir un script php en Perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $dbh = DBI->connect("DBI:mysql:$sqldb:$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";
    # si tu as beaucoup de champs à récupérer
    my @row;
    while(@row = $sel->fetchrow_array){
    {
        # @row est un tableau contenant les champs récupérés
        # valeur du premier champ = $row[0], valeur du second champ = $row[1] ..
    }
    $sel->finish;
    $dbh->disconnect();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $dbh = DBI->connect("DBI:mysql:$sqldb:$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";
    # si tu n'as qu'une seule valeur à récupérer, par exemple celle du champ url de ta base de données
    while(my ($url) = $sel->fetchrow_array){
    {
        # $url contient le champ unique récupéré
    }
    $sel->finish;
    $dbh->disconnect();
    tu étais très près de la solution avec while(($jenesaispas) $sel->fetchrow_array) ... il manquait juste le my devant ($jenesaispas) et le égal après

    Tu aurais dû poser ta question dans la partie Perl/SGBD de ce forum.

    Voici le lien vers la FAQ détaillant le module DBI
    http://perl.developpez.com/faq/?page...36#sectionC36a

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Par défaut
    Merci beaucoup pour ton aide :-)

    J'irai dans l'autre forum la prochaine fois, promis

    Encore merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter un script php dans perl
    Par philobedo dans le forum Web
    Réponses: 0
    Dernier message: 23/02/2009, 09h36
  2. Appel d'un script PHP depuis PERL
    Par tazmann dans le forum Web
    Réponses: 7
    Dernier message: 09/11/2007, 02h12
  3. Background d'un script php avec perl et unix (ou linux)
    Par fichiertempo dans le forum Web
    Réponses: 4
    Dernier message: 20/07/2006, 07h03
  4. Convertir un script php en asp
    Par tibow dans le forum ASP
    Réponses: 3
    Dernier message: 20/11/2005, 02h14
  5. Réponses: 6
    Dernier message: 23/05/2005, 08h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo