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] Paramètre async qui fait bugger Apache


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Par défaut [AJAX] Paramètre async qui fait bugger Apache
    Bonjour à tous,

    Je rencontre un problème lié à ajax et php.

    En effet, je travaille sur un portail permettant de gérer des rapports d'anomalies. Celui-ci permet notamment d'exporter un ou plusieurs de ces rapports au format word, excel et pdf.

    Mon problème ne concerne que l'export au format word.

    Cette page d'export est un formulaire permettant de sélectionner les différents critères permettant de générer une liste de rapports à exporter.
    Lorsque la selection est effectuée, l'utilisateur clique sur le bouton d'export.

    Pour le cas du bouton d'export word, lorsque l'utilisateur clique, une progress bar se lance (grâce à ajax) permettant au php d'exporter les données au format xml puis grâce à la fonction exec() php d'appeler un script VisualBasic pour convertir le tout au format Word. Une fois ces étapes terminées la progress bar se ferme et un lien de téléchargement vient s'afficher sous le bouton d'export (toujours grâce à ajax).

    Mon problème est que lorsque le nombre de rapport est élevé (supérieur à 200) et que je fais ma requête ajax en mode asynchrone, la progress bar se charge à l'infini et le lien de download n'est jamais affiché.
    Pourtant le fichier word à bien été généré.

    Pire apache doit être redémarré la plupart du temps comme s'il se retrouvait dans une boucle infini.

    Le message dans les logs apache :

    [Mon Jul 09 11:55:09 2012] [warn] Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting


    Ce bug ne se produit pas lorsque je passe le mode async à false mais il me fait perdre tout l'intérêt de la progress bar puisque celle ci ne se charge plus dynamiquement.

    A noter aussi que le principe de l'export excel est le même mais qu'il ne pose aucun problème...

    Est ce que quelqu'un à déjà eu des problèmes de se genre et comment les a t-il résolu?

    Merci d'avance à tous ceux qui voudront bien m'aider



    Je rajoute le code de la fonction qui pose problème avec la correction temporaire que j'ai apportée à savoir le passage en mode synchrone et la désactivation de la progress bar lorsque l'on exporte au format word

    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
    function startLoad(loadTime)
    {
    	// Ferme le boite de dialogue de confirmation
    	$('#myConfirmWindow').dialog('close');
     
     
     
    	// Lance le chargement de la progress bar
    	 if ($('#action').val() == 'export')
    	 {
    		 // Ouvre la popup de la progress  bar
    		 modaleWindow ('myProgressWindow','',RES_SAGA['M_CCB_LOAD_PROGRESS'],'');	
    		 $('#myProgressWindow').css('height','70px');
    		 $('#myProgressWindow').progressbar({value : 0});
    		 loadProgressBar(loadTime * 2);
    		 async = true;
    	 }
    	 else if($('#action').val() == 'exportWord')
    	 {
    		alert('Progress Bar désactivée')
    		async = false;
    	 }
    	 else
    	 {
    		 // Ouvre la popup de la progress  bar
    		 modaleWindow ('myProgressWindow','',RES_SAGA['M_CCB_LOAD_PROGRESS'],'');	
    		 $('#myProgressWindow').css('height','70px');
    		 $('#myProgressWindow').progressbar({value : 0});
    		 loadProgressBar(loadTime * 5);
    		 async = true;
    	 }
     
    	// Envoi du formulaire
    	// document.forms.ccbExportForm.submit();
     
    	type = getMandatoryBox('type[]');
    	criticite = getMandatoryBox('criticite[]');
    	etat = getMandatoryBox('etat[]');
    	tranche = getMandatoryBox('tranche[]');
    	copres = getMandatoryBox('copres[]');
    	system = getMandatoryBox('system[]');
    	subsystem = getMandatoryBox('subsystem[]');
     
    	$('#td' + $('#action').val()).html('<br /><b style="font-size: 200%">Loading...</b>');
     
    	$.ajax({
    		type: "POST",
    		url: "ccbExportForm.php",
    		dataType: 'text',
    		data: "action=" + $('#action').val()
    				+ "&type=" + JSON.stringify(type)
    				+ "&criticite=" + JSON.stringify(criticite)
    				+ "&etat=" + JSON.stringify(etat)
    				+ "&tranche=" + JSON.stringify(tranche)
    				+ "&system=" + JSON.stringify(system)
    				+ "&subsystem=" + JSON.stringify(subsystem)
    				+ "&copres=" + JSON.stringify(copres)
    				+ "&groupby=" + $('#groupby').val()
    				+ "&ccbnumber=" + $('#ccbnumber').val()
    				+ "&ccbdate=" + $('#ccbdate').val(),
    		async: async,
    		success: function(msg)
    		{
    			$('#myProgressWindow').dialog('close');
    			$('#td' + $('#action').val()).html(msg);
    			$('#action').val('export');
    		}
    	});
    }

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Par défaut
    Bonjour,

    Puisque personne ne semble être en mesure de m'aider pour le moment, j'apporte de nouvelles données suite à mes recherches.

    Tout d'abord, la requête étant effectuée en jquery il faut savoir que j'utilise la version 1.4.2 du framework, j'espère que ce bug n'est pas lié à cette version.

    Par ailleurs, avec la dernière version de firefox, le navigateur m'affiche le message suivant
    " le script est en cours d'utilisation ou ne répond plus "
    Le chemin du fichier concerné par le message est le fichier du framework jquery et il concerne la ligne 131, problème cette page est en code obscure et pour être honnête je ne la comprend pas.

    j'ai essayé de mettre la dernière version du framework mais malheureusement en faisant sa, cela provoque un nombre important de bug sur le portail.

    Est ce que quelqu'un à déjà eu ce type de message provenant de firefox ?

    je n'ai pour le moment aucune autre précision à donner et espère sincèrement que quelqu'un sera en mesure de m'aider même pour me donner une piste de réflexion.

    Encore une fois merci d'avance

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Par défaut
    Salut,

    J'ai du nouveau, il semblerait que la fonction exec de php pose problème.

    En effet, lors de l'appel de mon code en VB à l'aide de cette fonction il semblerait que Apache n'arrive jamais à libérer les ressources lié à son appel ce qui ne renvoi jamais de réponse à la requête AJAX.

    De plus malgré la fermeture du processus VBexport.exe dans le gestionnaire de tâche quand il a fini son travail, celui-ci est toujours utilisé par apache parce que je ne peux supprimer le fichier tant que je n'ai pas redémarré les services Apache.

    Mon code VB fonctionne bien lorsque je le lance avec l'invite de commande windows, il semblerait donc que quelque chose ne se passe pas bien lorsque je l'appel avec php.

    Est ce qu'il y a quelqu'un qui maitrise bien la fonction exec et qui saurait me dire s'il y a un moyen prorpre de fermer la fonction ? ou de libérer la mémoire ?

    Merci

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Par défaut
    J'ai finalement trouvé une solution.

    Il semblerait que le fait de générer le fichier XML puis de lancer le script VB dans la même fonction pose des problèmes au serveur pour répondre à la requête AJAX.

    J'ai donc déplacer la fonction exec pour qu'elle se lance après que le serveur est répondu ce qui me permet de repasser en asynchrone et de générer des fichiers word contenant beaucoup de données sans pour autant faire bugger Apache.

    Ce que je ne comprend pas c'est pourquoi cela fonctionne avec l'export Excel.

    Dans un soucis de rendement je vais marquer le sujet comme résolu et passer à autre chose.

    Aurevoir et merci quand même pour ceux qui ont pris la peine de lire mon sujet.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour et merci pour ce retour

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

Discussions similaires

  1. PhpMyAdmin requete qui fait bugger
    Par siro1 dans le forum Débuter
    Réponses: 0
    Dernier message: 25/06/2013, 11h02
  2. Trigger qui fait bugger la console
    Par MiniJulie dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/02/2012, 13h08
  3. [ZF 1.9] Validateur qui fait planter Apache
    Par mrjay42 dans le forum Zend_Form
    Réponses: 2
    Dernier message: 14/11/2009, 15h48
  4. [AJAX] Script qui fait planter IE6
    Par bassimgouzi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/08/2008, 19h19
  5. [POO] code qui fait bugguer Apache
    Par Tizard dans le forum Langage
    Réponses: 4
    Dernier message: 19/06/2006, 19h18

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