Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/05/2011, 14h56   #1
Membre du Club
 
Avatar de scrouet
 
Inscription : décembre 2003
Messages : 198
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2003
Messages : 198
Points : 44
Points : 44
Par défaut Blocage aléatoire script PHP

Bonjour.

N'ayant pas eu de retour sur le forum Performance Web (mauvais aiguillage ?), je tente ma chance sur le forum PHP, peut-être plus approprié.

Je me suis monté une petite appli Web de gestion de comptes bancaires sur Apache 2.2.x, PHP 5 et MySQL 5. L'un des scripts doit afficher la liste des opérations. Il est possible de filtrer la liste via un formulaire composé, entre autres, de listes (liste des tiers, liste des moyens de paiement, liste des catégories...).
Le problème que je rencontre depuis un certain temps est le suivant : le script se bloque de manière aléatoire lorsque je souhaite filtrer la liste, mais toujours au même endroit. Dit autrement, lorsque je veux filtrer pour n'afficher par exemple que les dépenses de santé, le script se bloque environ 3 fois sur 4. En revanche le blocage se fait à chaque fois au même niveau lors de la construction de la liste des tiers.
Comme ce blocage est récent, non systématique et que le script n'a pas été changé depuis un moment, j'ai l'impression qu'il s'agit plus d'un problème de gestion des ressources que de qualité de la programmation ou des données.
Est-ce que quelqu'un aurait une idée pour pousser l'investigation, voire carrément une solution ?
scrouet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 15h06   #2
Membre éclairé
 
Avatar de kimjoa
 
Inscription : février 2009
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : février 2009
Messages : 318
Points : 360
Points : 360
Bizarre
Y'a pas de message d’erreur?
Sinon l'algo de trie est peux être erroné?
Un bout de code?
kimjoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 16h10   #3
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
ça fait longtemps que j'ai rencontré ce genre de problèmes, je te conseille de revoir le code qui est à l'origine du blocage de votre script certainement à un instant ton serveur n'arrive pas à "comprendre" votre code c'est à dire votre code contient des instructions illogiques.
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 16h25   #4
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Afficher le niveau le plus bas d'erreur ? Tu seras à mon avis vite fixé...
Soit c'est un dépassement mémoire, soit un temps d'exécution trop long.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 17h23   #5
Futur Membre du Club
 
Homme
Responsable de projet fonctionnel
Inscription : mars 2006
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Responsable de projet fonctionnel
Secteur : Distribution

Informations forums :
Inscription : mars 2006
Messages : 41
Points : 15
Points : 15
Personellement je voterai pour une boucle infinie...
Dave Lopeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 17h42   #6
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
une durée d’exécution longue ou une boucle infinie je pense les deux mènent à la même chose: un message d'erreur indiquant que le temps d’exécution est dépassé alors il n'a pas signalé qu'il y a une erreur il a dit juste script bloque.
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 22h47   #7
Membre du Club
 
Avatar de scrouet
 
Inscription : décembre 2003
Messages : 198
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2003
Messages : 198
Points : 44
Points : 44
Ce n'est pas une boucle infinie : j'utilise le résultat d'une requête pour afficher la liste des tiers.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$InitialeTiers = "";
foreach ($LstTiers as $Ligne) {
	/* Ajout ligne vide supplementaire si changement initiale tiers */
	if ($InitialeTiers != "" && $InitialeTiers != strtolower(substr($Ligne['Tie_Nom'], 0, 1))) {
		print "\t\t\t<option value=\"\">&nbsp;</option>\n";
	}
	$InitialeTiers = strtolower(substr($Ligne['Tie_Nom'], 0, 1));
	if ($Debug > 2)
		ecrire_message("Tie_ID bis={$Ligne['Tie_ID']}", "N", $Fonction);
	print "\t\t\t<option value=\"" . $Ligne['Tie_ID'] . "\"";
	if ($Debug > 2)
		ecrire_message("ici", "N", $Fonction);
	if ($Param['Tie_ID'] == $Ligne['Tie_ID'])
		print " selected=\"selected\"";
	$Tiers = $Ligne['Tie_Nom'];
	if ($Ligne['Tie_Prenom'] != "")
		$Tiers .= " " . $Ligne['Tie_Prenom'];
	print ">" . traiter_accents(stripslashes($Tiers), "ISO->HTML") . "</option>\n";
}
Lorsque ça se bloque, c'est juste avant le message de debug "ici".
J'ai ajouté un tiers dans le début de la liste (triée alphabétiquement) et il en ressort que ça ne bloque pas sur un tiers en particulier mais sur le 227e.
Autre précision : que ça se bloque ou pas, la requête SQL de récupération de la liste s'exécute toujours sans problème et m'indique toujours le même nombre de résultats, à savoir 576.

Enfin, si je laisse mon navigateur attendre lorsque le script se bloque, il termine par une erreur "Bad request".

Pour ce qui est du temps d'exécution hors plantage, la page se charge approximativement en 2 secondes sans aucun filtre et affiche un tableau de plus de 1250 lignes.
scrouet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 10h29   #8
Membre du Club
 
Avatar de scrouet
 
Inscription : décembre 2003
Messages : 198
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2003
Messages : 198
Points : 44
Points : 44
Je ferme la discussion, ça ne bloque plus.
scrouet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web