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 PHP Discussion :

Script trop gourmand en ressources


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par défaut Script trop gourmand en ressources
    Bonjour,

    J'ai un script qui va chercher des infos sur un webservice pour les inserer dans une base de données.. Le probleme c'est la masse des infos.. je n'ai pas pu tester jusqu'au bout, ca plante avant.. j'en suis a 250 000 enregistrements en base de donnée.. bon bien sur, c'est un script php qui tourne en ligne de commande, pas par apache.


    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    <?php
     
    $root = '/var/www/*******/html';
    require_once($root.'/config/config.php');
    require_once($root.'/config/meta.php');
    require_once($GLOBALS['smarty']);
    require_once($root.'/lib/recherche_getparam.php');
     
    define('IN_PHP',true);
     
    $Smarty = new Smarty();
    //$nbResult = 20;
    $selected_departureDate = '2007-10-26';
    $selected_minDepartureDate = '2007-04-26';
    $selected_maxDepartureDate = '2008-10-26';
    $responseFormat = 'VeryLight';
     
     
    //echo $client->__getLastRequest().'\n\n';
    //print_r($produits);
     
     
    $link = mysql_connect('localhost:/tmp/mysql.sock', '*******', '*******');
    if (!$link) {
    	die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    $db_selected = mysql_select_db('****', $link);
    if (!$db_selected) {
    	die ('Can\'t use foo : ' . mysql_error());
    }
     
     
    $requete = 'TRUNCATE TABLE packs;';
    $result = mysql_query($requete);
    if (!$result) {
    	die('Invalid query: ' . mysql_error(). $requete);
    }
     
     
     
    for ($nbResult = 20; $nbResult < 2000 ; $nbResult+=20)
    {
    	unset($produit);
    	unset($produits);
     
            //CE SCRIPT APPELLE LE WEB SERVICE, PREND 20 ID DE PRODUITS ET LES RENVOYE SOUS FORME D'ARRAY produits 
    	include ($root.'/lib/resultat_recherche.php'); 
     
    	foreach ($produits as $k=>$v)
    	{
    		unset($produit);
     
    		$codeProduit = $v['code'];
     
     
        //CE SCRIPT APPELLE LE WEB SERVICE, RENVOYE LA FICHE COMPLETE DU PRODUIT SOUS FORME D'ARRAY produit
    		include ($root.'/lib/produit.php');
     
    		//echo '<pre>';
    		//print_r($produit);
    		//echo '</pre>';
     
    		foreach ($produit['departureCity'] as $k2=>$v2) {
    			$ville_depart[$k2] = $v2;
    		}
     
    		unset($types, $themes);
     
    		foreach ($produit['themes'] as $k3=>$v3)
    		{
    			$themes .= $v3.'|';
    		}
     
     
     
    		foreach ($produit['types'] as $k4=>$v4)
    		{
    			$types .= $v4.'|';
    		}
     
    		$themes = substr($themes, 0, -1);
    		$types = substr($types, 0, -1);
     
    		foreach ($produit['disponibility'] as $w)
    		{
    			$requete = "
    		INSERT INTO `packs` 
    		( 
    		`code` , 
    		`countryLabel` , 
    		`countryCode` , 
    		`cityLabel` , 
    		`label` , 
    		`basePrice` , 
    		`mealPlan` , 
    		`departureCity` , 
    		`departureCityLabel` , 
    		`date` , 
    		`price` , 
    		`numDays` , 
    		`numNights` , 
    		`resume`,
    		`types`,
    		`themes`
    		)
    		VALUES 
    		(
    		'".StringForMysql($produit['code'])."', 
    		'".StringForMysql($produit['countryLabel'])."', 
    		'".StringForMysql($produit['countryCode'])."', 
    		'".StringForMysql($produit['cityLabel'])."', 
    		'".StringForMysql($produit['label'])."', 
    		'".StringForMysql($produit['basePrice'])."', 
    		'".StringForMysql($produit['mealPlan'])."', 
    		'".StringForMysql($w['departureCity'])."', 
    		'".StringForMysql($ville_depart[$w['departureCity']])."', 
    		'".StringForMysql($w['date'])."', 
    		'".StringForMysql($w['price'])."', 
    		'".StringForMysql($w['numDays'])."', 
    		'".StringForMysql($w['numNights'])."', 
    		'".StringForMysql($produit['resume'])."',
    		'".StringForMysql($types)."',
    		'".StringForMysql($themes)."'
    		);"	;
    			echo $requete;
    			echo '<hr />';
    			$db_selected = mysql_select_db('******', $link);
    			if (!$db_selected) {
    				die ('Can\'t use foo : ' . mysql_error());
    			}
    			$result = mysql_query($requete);
    			if (!$result) {
    				die('Invalid query: ' . mysql_error(). $requete);
    			}
    		}
     
    	}
    }
     
    mysql_close($link);
     
    function StringForMysql($str)
    {
    	$str = addslashes($str);
    	$str = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
    	return $str;
    }
    ?>


    Alors la j'ai deux pistes.. alleger le script.. mais j'ai deja placé des unset un peu partout... ou alors essayer de faire un script qui se rappelle lui meme .. mais comment faire ca .. et surtout en ligne de commande et pas avec un meta redirect, vu que ce script est appellé en cron ??

  2. #2
    Membre éclairé Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Par défaut
    si ce script ne sert qu'a alimenter une base de donnees en utilisant un service WEB, peut etre que PHP n'est pas adapte...
    Je rappel que PHP est un langage pour construire des pages WEB dynamique. Bien ur on peut faire d'autre chose avec... comme ce que tu as fait, mais je ne pense pas que ce soit adapter.

    J'utiliserais plutot du perl pour faire cela.
    Bonne continuation...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par défaut
    Merci pour l'avis.. et quand on ne connait pas Perl ??

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par défaut
    on est bien dans le forum php .. ??

  5. #5
    Membre éclairé Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Par défaut
    Comment t'as fait quand tu connaissais pas PHP ??

    PERL ressemble de très près au php, à quelque différences près...

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

Discussions similaires

  1. Defilement de texte, script js trop gourmand
    Par elekaj34 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/07/2009, 10h23
  2. [PHP-JS] Script très gourmand en ressource: comment ?
    Par EvilAngel dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2007, 08h13
  3. Optimiser une table sur SQL server trop gourmande en CPU
    Par molarisapa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/06/2006, 16h17
  4. SQL Serveur gourmand en ressources
    Par WebPac dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 16/05/2006, 14h11
  5. Openldap gourmand en ressources matérielles ?
    Par oligig dans le forum Réseau
    Réponses: 5
    Dernier message: 04/10/2005, 11h37

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