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

AJAX Discussion :

[AJAX] Une ligne qui plante de temps en temps


Sujet :

AJAX

  1. #1
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut [AJAX] Une ligne qui plante de temps en temps
    Bonjour

    J'ai un soucis juste avec une seule ligne. Voila mon script coté serveur :

    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
    <?php
     
    	// Include
    	// série d'include
     
    	// Connexion à la base de données
    	//Mes fonctions pour se connecter à la bd
     
    	// Si c'est le castor (IA) qui joue
    	if (isset($_POST['castor'])){
    		// Récupération des paramètres
    		// cré ma variable $tlettre qui est un tableau de lettre
     
    		// Récupérer le résultat
    		$mot=trouvermot($tlettre); // fonction se trouvant dans un autre fichier. renvoie un mot existant dans la bd à partir des lettres données ou vide s'il n'y a pas de mot
    		//echo "alert('Mot : $mot');"; // pour vérifier le contenu du mot en mode debuguage
    		if ($mot!=""){
    			echo "motexiste=true;";
    			echo "motcastor='$mot';";// C'est cette ligne qui me pause problème
    		}
    	} else{ // Si c'est le joueur qui joue
    		// Toute cette partie du code fonctionne
    	}	
    ?>
    Coté client, ma variable motexiste est initialisé à false et motcastor vaut "". Si ma variable motexiste vaut true après l'exécution de ma requête au serveur, j'execute un certain code. Pour trouver l'origine du problème, j'ai mis ma ligne echo "motcastor='$mot';"; en commentaire et placé motexiste de nouveau à false juste après l'exécution de ma requête. Dans ce cas la, je n'ai pas de soucis, mon programme s'exécute en fonction du contenu de mes variables.

    Si dans la même situation je ne met pas cette ligne en commentaire, lors de l'exécution de mon script coté serveur, la page est rechargé... De plus, l'exécution du code est très long pour finalement recharger la page.

    Es ce que vous avez une idée d'où pourrait venir le problème ?

    Pour information j'ai posté ce matin cette question (en donnant la ligne concerné) et on m'avais dit que cette ligne était correcte.

  2. #2
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut
    Apres quelques recherches le problème ne vient pas de la ... J'ai fait quelques modifications en supprimant un de mes echo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($mot!=""){
    	echo "motcastor='$mot';";
    }
    Pour ce qui est de la ligne précédente elle est passé coté client. motcastor étant à vide par défaut, si après l'exécution de mon script php il n'est plus vide, je met ma variable motexiste a true. Le problème persiste.

    J'ai essayé de mettre l'appel de ma fonction trouvermot() en commentaire avec $mot vide pour éviter que cela me plante tout et la l'erreur ne se reproduit plus apparemment (je ne peux pas en être sur à 100% vu que l'erreur ne se produit pas tout le temps. Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //$mot=trouvermot($tlettre);
    $mot="";
    Je me suis retrouvé dans un cas ou la ligne que je croyais fautive été en commentaire et que le problème est survenue tout de même donc mon problème vient de la fonction trouvermot().

    Je vous donne directement le contenu de la fonction, j'ai fait plusieurs test sans trouver l'origine du problème.

    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
    	function trouvermot($tlettre){
     
    		//nombre de lettre a rechercher
    		$taillemot = floor(rand(3,8));
    		//$taillemot=5;
    		if ($taillemot==8){
    			$taillemot=7;
    		}
     
     
    		// Recherche d'un mot de taille $taillemot
    		$motexiste = false;
    		$mot="";
    		$a=1;
    		while (($a<=7) && ($motexiste==false)){
    			if ($tlettre[$a]!=""){
    				//On rajoute une lettre de plus
    				$b=1;
    				while (($b<=7) && ($motexiste==false)){
    					if (($a!=$b)&&($tlettre[$b]!="")){
    						// On rajoute une lettre de plus
    						$c=1;
    						while (($c<=7) && ($motexiste==false)){
    							if (($a!=$c) && ($b!=$c) && ($tlettre[$c]!="")) {
    								if ($taillemot>3){ // Mot composé de plus de 3 lettres
    									$d=1;
    									while (($d<=7) && ($motexiste==false)){
    										if (($a!=$d) && ($b!=$d) && ($c!=$d) && ($tlettre[$d]!="")) {
    											if ($taillemot>4){ // Mot composé de plus de 4 lettres
    												$e=1;
    												while (($e<=7) && ($motexiste==false)){
    													if (($a!=$e) && ($b!=$e) && ($c!=$e) && ($d!=$e) && ($tlettre[$e]!="")) {
    														if ($taillemot>5){ // Mot composé de plus de 5 lettres
    															$f=1;
    															while (($f<=7) && ($motexiste==false)){
    																if (($a!=$f) && ($b!=$f) && ($c!=$f) && ($d!=$f) && ($e!=$f) && ($tlettre[$f]!="")) {
    																	if ($taillemot>6){ // Mot composé de 7 lettres
    																		$g=1;
    																		while (($g<=7) && ($motexiste==false)){
    																			if (($a!=$g) && ($b!=$g) && ($c!=$g) && ($d!=$g) && ($e!=$g) && ($f!=$g) && ($tlettre[$g]!="")) {
    																				$mot= $tlettre[$a].$tlettre[$b].$tlettre[$c].$tlettre[$d].$tlettre[$e].$tlettre[$f].$tlettre[$g];
    																				$motexiste=verifmotexiste($mot);
    																			}
    																			$g=$g+1;
    																		}
    																	} else { // Mot de 5 lettres
    																		$mot= $tlettre[$a].$tlettre[$b].$tlettre[$c].$tlettre[$d].$tlettre[$e].$tlettre[$f];
    																		$motexiste=verifmotexiste($mot);
    																	}
    																}
    																$f=$f+1;
    															}
    														} else { // Mot de 5 lettres
    															$mot= $tlettre[$a].$tlettre[$b].$tlettre[$c].$tlettre[$d].$tlettre[$e];
    															$motexiste=verifmotexiste($mot);
    														}
    													}
    													$e=$e+1;
    												}
    											} else { // Mot de 4 lettres
    												$mot= $tlettre[$a].$tlettre[$b].$tlettre[$c].$tlettre[$d];
    												$motexiste=verifmotexiste($mot);
    											}
    										}
    										$d=$d+1;
    									}
    								} else { // mot composé de 3 lettres
    									$mot= $tlettre[$a].$tlettre[$b].$tlettre[$c];
    									$motexiste=verifmotexiste($mot);
    								}
    							}
    							$c=$c+1;
    						}			
    					}
    					$b=$b+1;
    				}
    			}
    			$a=$a+1;
    		}
     
    		// Si on a pas trouvé, on cherche un mot de 2 lettres
    		if ($motexiste==false){
    			$a=1;
    			while (($a<=7) && ($motexiste==false)){
    				if($tlettre[$a]!=""){
    					//On rajoute une lettre de plus
    					$b=1;
    					while (($b<=7) && ($motexiste==false)){
    						if (($a!=$b)&&($tlettre[$b]!="")){
    							$mot= $tlettre[$a].$tlettre[$b];
    							$motexiste=verifmotexiste($mot);
    						}
    						$b=$b+1;
    					}
    				}
    				$a=$a+1;
    			}
    		}
     
    		// Si on ne trouve pas le mot, le mot sera vide
    		if ($motexiste==false){
    			$mot="";
    		}
    		// Si on a trouvé, on remplace les joker par une lettre de sorte a avoir le premier possible
    		else {
    			$mot=rappelmot($mot);
    		}
     
    		//$mot="";
     
    		return $mot;
     
    	}
    Merci d'avance.

  3. #3
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut
    Je n'ai toujours pas de solution mais une simple question qui pourra peut être m'aider :
    Si j'arrive à la limite de mon set_time_limit qu'es ce qui va s'arrêter ? uniquement mon script coté serveur ? dans ce cas rien n'est renvoyé à mon client et il exécute ces fonctions sans avoir les variable qu'aurait envoyé mon serveur (cela ne me pause pas de problème vu que les variable sont initialisé avant l'exécution de mon script php).

  4. #4
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut
    Comme je n'arrivais pas à trouver, j'ai fait un test sur le temps écoulé :

    Placé au début de ma fonction trouvermot(). Puis dans le code avant chaque constitution de mot et donc vérification de l'existence de ce mot dans la BD :

    et ma fonction verifdate() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function verifdate($debut){
    	$ecoule= time()- $debut;
    	if ($ecoule>=10){
    		exit;
    	}
    }
    J'ai testé avec une seconde et cela coupe uniquement mon script coté serveur ce que je vous demandais la dernière fois.

    Pour que ceci fonctionne il faut bien sur que la ligne contenant l'appel à la fonction verifdate() soit appelé et ... apparemment ce serait le cas. Après plusieurs test ceci fonctionne. Mon problème était surement dut à un temps d'exécution très long.

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

Discussions similaires

  1. sed: remplacer une ligne qui commence par Version
    Par lili2704 dans le forum Linux
    Réponses: 8
    Dernier message: 21/07/2008, 14h26
  2. [AJAX] saisie automatique qui plante sous AJAX
    Par kosowski dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 25/06/2008, 14h35
  3. Ouvrir une fenetre qui reste active tout le temps
    Par pas30 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/01/2007, 18h02
  4. [j3d] afficher une ligne qui point vers un objet
    Par guitalca dans le forum 3D
    Réponses: 1
    Dernier message: 06/03/2006, 21h44
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

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