Plantage d'Apache (utilisation de 2 bases MySQL + AJAX)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Plantage d'Apache (utilisation de 2 bases MySQL + AJAX)

par Ryle » 22 juin 2006, 11:07

Ca ne t'aidera probablement pas beaucoup mais j'ai rencontré le même problème sur un serveur de dev avec php 4/apache 1.3/oracle 8i : lors de l'ouverture d'un menu le message d'alerte apparaissait sur le serveur et impossible d'aller plus loin tant qu'on avait pas cliqué sur ok...

La même config sur le serveur de prod ne posait pas de problème, j'ai jamais réussi à savoir ce qui se passait, mais c'est plus vraissemblablement au niveau d'apache...

Jette un coup d'oeil sur google avec le code erreur du message d'apache, il y avait quelques topic sur le sujet, peut être y trouveras-tu plus d'infos...

par mere-teresa » 21 juin 2006, 17:05

Tu te connectes aux deux bases de données simultanément ?

Plantage d'Apache (utilisation de 2 bases MySQL + AJAX)

par lasyan3 » 21 juin 2006, 12:46

Bonjour,

Tout d'abor, mon problème traitant à la fois de PHP, AJAX et MySQL, je ne savais pas trop dans quel forum le placer au mieux, donc excusez-moi d'avance si ce sujet n'est pas là où il devrait.

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 : Tout sélectionner

<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 :
<?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 apparation, 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...