Boucle WHILE ne se termine pas
Posté : 08 nov. 2012, 11:40
Bonjour à tous,
J'ai un petit soucis avec une boucle while plutôt simple. J'ai une requête SQL qui me retourne (de tête) 146 000 résultats. Bien entendu pour traiter tous ces résultats j'utilise une boucle while, mais là est mon problème, sans aucuns messages d'erreur ma boucle s'arrête au 82 006 eme résultat. Les données de cette fameuse 82 006 eme ligne sont normal, pas de champs NULL ou autre qui pourraient tout faire bloquer.
Voici la partie de mon code qui pose probleme :
J'ai d'abord pensé à une saturation de mémoire du serveur en vue du grand nombre de lignes mais lorsque je vais dans mon apache access log, à la ligne où il détecte la requête il me met un code de statut : 200 or cela signifie que pour mon apache tout s'est passé correctement et que le traitement est arrivé à son terme.
Avez-vous une solution ou une piste à suivre ?
Merci beaucoup
J'ai un petit soucis avec une boucle while plutôt simple. J'ai une requête SQL qui me retourne (de tête) 146 000 résultats. Bien entendu pour traiter tous ces résultats j'utilise une boucle while, mais là est mon problème, sans aucuns messages d'erreur ma boucle s'arrête au 82 006 eme résultat. Les données de cette fameuse 82 006 eme ligne sont normal, pas de champs NULL ou autre qui pourraient tout faire bloquer.
Voici la partie de mon code qui pose probleme :
$InfoArray = array();
$thisLogger->logWrite("Debut du traitement"); // Ecrit dans un fichier log
// die('1'); // Il le fait correctement si je le décommente
while (!$resultSet->EOF) { // Boucle de traitement des resultats de la requete
$InfoArray[$resultSet->fields['DISTRIBUTEUR_ID']][$resultSet->fields['CAMPAGNE_ID']] += $resultSet->fields['MONTANT_SUBVENTION']; // Seul traitement sur mes résultats.
$message = 'DISTRIBUTEUR_ID : ' . $resultSet->fields['DISTRIBUTEUR_ID'] . '; CAMPAGNE_ID : ' . $resultSet->fields['CAMPAGNE_ID'] . '; MONTANT : ' . $resultSet->fields['MONTANT_SUBVENTION'] . ';';
$thisLogger->logWrite($message); // Ecrit la ligne de résultat dans un fichier
$i++;
$resultSet->MoveNext(); // Sert à passer au résultat suivant
} // end while
// die('2'); // Ne le fait jamais
L'object $thisLogger me sert juste à dégoguer et a savoir où il s'est arrêter.J'ai d'abord pensé à une saturation de mémoire du serveur en vue du grand nombre de lignes mais lorsque je vais dans mon apache access log, à la ligne où il détecte la requête il me met un code de statut : 200 or cela signifie que pour mon apache tout s'est passé correctement et que le traitement est arrivé à son terme.
Avez-vous une solution ou une piste à suivre ?
Merci beaucoup