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

Langage PHP Discussion :

[POO] [Serveur] Plantage d'Apache (Utilisation de 2 bases MySQL + AJAX)


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 21
    Points : 9
    Points
    9
    Par défaut [POO] [Serveur] Plantage d'Apache (Utilisation de 2 bases MySQL + AJAX)
    Bonjour,

    Dans le cadre du développement d'un intranet, j'utilise 2 bases de données simultanément. Mon problème est que quand je me connecte via une page appelée par une routine AJAX, le serveur Apache plante. Pour être exact, j'obtiens une fenêtre windows de type "l'instruction à xxx emploie l'adresse mémoire zzz. La mémoire ne peut pas être read/written. Cliquez sur OK pour terminer le programme". Après avoir cliqué sur "OK" Apache semble reprendre le cours normal de son existence.

    J'ai réussi à isoler le problème : une page de test lance une routine AJAX qui se connecte aux 2 bases de données.
    Voici la page de test (test_ajax.php) :
    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
     
    <html>
    <head>
    <style>
    #loading {
    	position: absolute;
    	top: 0px;
    	left: 0px;
    	width: auto;
    	background-color: red;
    	display: none;
    }
    </style>
    </head>
    <body>
    <script>
    //routine de lancement de la requête AJAX
    function envoyer_requete( methode, url, mode, data, action, invisible )
    {
    	var xhr_object = null;
    //	alert(invisible);
     
    	if(window.XMLHttpRequest) // Firefox 
    	   xhr_object = new XMLHttpRequest(); 
    	else if(window.ActiveXObject) // Internet Explorer 
    	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   return; 
    	} 
     
    	if( methode == "GET" && data != null )
    	{ 
    		url += "?"+data; 
    		data = null; 
    	} 
     
    //	alert(url);
    	xhr_object.open(methode, url, mode);
     
    	xhr_object.onreadystatechange = function()
    	{
    		if(xhr_object.readyState == 4)
    		{
    			if( document.getElementById('loading') != null && invisible != true )
    				document.getElementById('loading').style.display = 'none';
    			if( xhr_object.status == 200 )
    			{
    //				alert(xhr_object.responseText);
    				eval(action);
    			}else
    				alert('pb avec la requête AJAX ('+xhr_object.status+') !!!');
    		}
    	} 
     
    	if(methode == "POST")
    	{
    		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded;"); 
    	}
     
    	if( document.getElementById('loading') != null && invisible != true )
    		document.getElementById('loading').style.display = 'block';
     
    //	if( confirm('envoyer?') ) 
    	xhr_object.send(data); 
    }
    //lancement de la routine avec les paramètres
    function AttendreTest()
    {
    var data = '';
    //une fois la requête terminée, j'actualise le cadre et je relance la routine après 2 secondes
    	var action = 'document.getElementById(\'cadre_principal\').innerHTML = xhr_object.responseText;' +
    			'setTimeout( \"AttendreTest()\", 2000 );';
     
    	envoyer_requete( 'GET', 'ajx.php', true, data, action );
    }
    AttendreTest();
    </script>
    <div id="loading">Traitement en cours...</div>
    <div id='cadre_principal'></div>
    </body>
    </html>
    Et voici la page ajx.php :
    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
     
    <?php
    $my_xeis = mysql_connect( "localhost", "aaaaa", "zzzzz", true );
    mysql_select_db( "intranet_xeis", $my_xeis );
     
    $my_all = mysql_connect( "1.2.3.4", "aaaaa", "zzzzz", true );
    mysql_select_db( "intranet_commun", $my_all );
     
    $id_rapport = 18;
     
    	$sql = "SELECT * FROM rapports WHERE id_rapport = $id_rapport;";
    	$result = mysql_query( $sql, $my_xeis );
    	//$rapport = mysql_fetch_object( $result );
     
    sleep(5);
    if( $my_xeis ) mysql_close($my_xeis);
    if( $my_all ) mysql_close($my_all);
    ?>
    Comme vous pouvez le constater, le code est assez simple, surtout pour ajx.php. Comment je procède pour tester : j'ouvre 4 fois la page test_ajax.php et j'attends... En laissant la commande mysql_fetch_object commentée, tout se passe très bien, les pages tournent en boucle sans interruption. Si par contre de décommente la ligne, Apache plante rapidement.
    Notez que je tourne avec Windows 2000 Pro, et qu'avec Windows XP le problème n'apparaît pas.

    Ma configuration : j'utilise Wampserver 1.6.0 avec :
    Version de Apache:Apache/2.0.55 (Win32)
    Version de PHP:5.1.1
    Extensions chargées:
    bcmath, calendar, com_dotnet, ctype, date, ftp, iconv, odbc, pcre, session, libxml, standard, tokenizer, zlib, SimpleXML, dom, SPL, wddx, xml, apache2handler, mbstring, mysql
    Version de MySQL:5.0.17-nt

    Voilà, franchement je suis désespéré, est-ce que quelqu'un aurait une piste svp ? J'ai essayé de décrire un maximum mon problème et les conditions de son apparition, mais s'il vous faut des informations supplémentaires n'hésitez pas à me demander. Merci d'avance.

    [MAJ] J'ai effectué des tests supplémentaires. J'ai testé toutes les fonctions mysql_fetch_ (array, assoc, field, lengths, object, row) et le plantage ne survient qu'avec field et object, autrement dit avec les fonctions qui renvoient un objet. Affaire à suivre...

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Cela semble plus etre un probleme a envoyer a php.net.
    suremement un bug dans le moteur lui meme.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

Discussions similaires

  1. [WM17] Plantage Test Application sur tablette avec Base MySQL
    Par tveniere dans le forum Windev Mobile
    Réponses: 6
    Dernier message: 30/09/2013, 10h25
  2. [1.x] Utilisation de la base Mysql
    Par thewind1 dans le forum Symfony
    Réponses: 1
    Dernier message: 21/04/2008, 15h10
  3. [apache] configurer serveur ftp avec apache sous winXP
    Par Allaya-Hechmi dans le forum Apache
    Réponses: 3
    Dernier message: 18/04/2006, 22h23
  4. [Apache] utiliser MySQL
    Par sebduth dans le forum Apache
    Réponses: 3
    Dernier message: 04/08/2004, 10h17
  5. Utilisation d'une base MySQL
    Par sylviefrfr dans le forum Bases de données
    Réponses: 5
    Dernier message: 29/06/2004, 15h30

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