problème de script qui s'arrête avant la fin [RESOLU] - PHP - Programmation
Marsh Posté le 28-05-2009 à 10:13:49
ne pas imbriquer les requêtes alors ? tu fais 4000 * 4000 requêtes, alors que tes 2 requêtes n'utilisent pas de critères WHERE (select * les 2)
Quel intérêt alors de les imbriquer ?
Marsh Posté le 28-05-2009 à 10:32:14
jagstang a raison
sauf erreur de ma part, le lien qui lie les deux requetes
est que "tarif"=CODET
if($r1==$t1) $r1=$ct['tarif']; $t1=$ct1['CODET']; //extrait de ton code
donc je pense que pour la deuxieme requete
tu peut faire "select * from tarif where CODET='$r1'",
ce qui je pense limitera considérablement le temps d'excution,
apres tu peut aussi faire le tout en une seule requete tout depend de la relation entre tes deux tables.
Marsh Posté le 28-05-2009 à 10:49:43
Merci Jagstang et Infoman64, c'est exact qu'avec l'instruction Where, je vais diviser par 4000 le nombre de requêtes.
Infoman64, tu dis que cela peut aussi se faire en une seule requête, peux-tu m'expliquer comment ?
Marsh Posté le 28-05-2009 à 11:28:49
ben si tes donnes sont liés
tu peut faire
select tarifalt.*,tarif.* from tarifalt,tarif where tarif=CODET
ca te fait qu'une boucle, et ca te fera la meme chose,
et pour mettre que c'est resolu tu clique le petit stylo de ton premier message et tu marque [RESOLU] dans le titre de ton message
pour une fois qu'il y en a un qui le fait, il faut l'encourager...
Marsh Posté le 27-05-2009 à 22:51:52
Bonjour,
J'ai un script php qui va lire deux bases de données sql. Ces bases sont de 4.000 entrées chacune.
Or, l'exécution de ce script s'arrête avant la fin.
Voici le script :
<?php
ini_set ('max_execution_time', 0);
ini_set ('max_input_time',1000000);
ini_set ('memory_limit',-1);
$liendb = mysql_connect("*****" );
mysql_select_db("****" );
$sql= "SELECT * FROM tarifalt";
$resultat = mysql_query ($sql);
while ($ct = mysql_fetch_array($resultat))
{
$r1=$ct['tarif'];
$altcout=$ct['prix'];
$tt=$ct['destination'];
$sql1="SELECT * from tarif";
$resultat1 = mysql_query ($sql1);
while ($ct1 = mysql_fetch_array($resultat1))
{
$t1=$ct1['CODET'];
if($r1==$t1)
{ $altmarg=$altcout*1.2;
$stunt=$ct1['VALO'];
if ($stunt>=$altmarg) {$res=$stunt; $txt="ancien tarif - marge >20%";}
if ($stunt<$altmarg & $stunt>$altcout) {$res=$stunt; $txt="ancien tarif - marge < 20%";}
if ($stunt<$altmarg & $stunt<$altcout) {$res=$altcout; $txt="augmentation";}
echo $tt ."<BR>";
break;
}
}
}
echo "fini";
?>
Que faire ? Merci d'avance pour votre aide.
Pascal
Message édité par sorciervoyageur le 28-05-2009 à 11:31:31