ok, pourrais-je vous "tester" ?
voici un problème de TAILLE
cela fait TROIS SEMAINES que la série d'instructions mysql (permettant la sélection de certains champs propres à mes membres afin de leur envoyer des e-mails personnalisés) se met à BLOQUER carément le serveur malgré les usleep(100000) que j'ai bien pu mettre...
Alors, je me suis dit que c'était sans doute une requête particulière qu'il n'appréciait pas car souvent il bloquait anormalement au même endroit à la requête :
UPDATE webmasters set tmp_id = id, tmp_da = da, tmp_za = za, etc.
(ya environ 8 champs comme ça)
même si BIEN SUR ce n'est pas la SEULE qui bloquait... des requêtes comme des INSERTION sur une simple table... plantaient ! ou comme un autre type d'update également... DES TRUCS PAS LOGIQUES DU TOUT puisque sous l'interface PHPMYADMIN, les mêmes requêtes fonctionnent parfaitement...
Et bien, sûr, c'est UPDATE qui touche une base de 10.000 membres, soit 10.000 lignes, ce qui n'est normalement RIEN DU TOUT pour un serveur (j'en ai bien conscience)
Mais là... quand c'est le script PHP qui exécute ça , ça se BLOQUE...
Je sais pas pourquoi ! Pourtant, la même requête exécutée au même momnet sur l'interface PHPMYADMIN ne plante pas...
alors, qu'est-ce que c'est ???
Si vous arrivez à m'aider, ce sera chez vous que j'irai TOUT DE SUITE dès que mes revenus auront augmenté grâce à vous !!! si vous parvenez à me faire résoudre ce problème grave qui concerne tous les membres passionnés de mon site, devant subir une maintenance de deux à trois heures (que je fais moi-même en étant assez souvent obligé de rebooter le serveur tellement que ces "boucles infinies" produites par mysql sont étranges)...
pour info.... ma fonction requete_sql est faite comme ceci : effectivement, j'ai consu un mode DEBUG, lequel m'a permis de savoir avec PRESCISIOn que c'était bien les requêtes citées ci-dessus qui faisaient PLANTER le serveur (comme par hasard, requêtes de MISE à jour... jamais de sélection)
function requete_sql($query, $fline = 0, $fname = "") { global $SITE, $webmasters_db; if (!($SITE['connexion_sql'])) { die ("<u>Problème d'exécution de la requête</u> : <b>$query</b><br><br>Vous avez oublié de vous connecter via la fonction <b>connexion_sql()</b>..."); } $i = 1; $tquery = substr(strtoupper($query),0,6); if (($SITE['ip_admin'] == $_SERVER['REMOTE_ADDR']) and ($SITE['debug_sql']==1)) { $status = explode(' ',mysql_stat($webmasters_db)); echo "<hr><b><u><font color=red>ETAT DU SERVEUR SQL</font></u> : <font color=green>"; print_r($status); echo "</font></b> : <br><br>"; echo "<b><u><font color=red>REQUETE SQL</font></u> (".basename($fname)." - ligne n°$fline) : <font color=blue>".$query."</font></b><hr><br>\r\n"; } $result = mysql_query($query,$webmasters_db); if ($SITE['pause_sql']) { //-- Pause de 1/10 de seconde pour REPOSER LE SERVEUR quand il y a TROP DE REQUETES A LA SUITE --> usleep($SITE['pause_sql']); } if (!$result) { deconnexion_sql(); die('Problème dans la requête MYSQL...'); } else { if ($tquery == 'SELECT') { while ($fetch_x = mysql_fetch_array($result, MYSQL_ASSOC)) { // $num[$i] = stripslashes($fetch_x); $num[$i] = $fetch_x; $i++; } mysql_free_result($result); } else $i = 2; } $num['count'] = $i-1; if (!$num['count']) { $num = 0; } return $num; }
cordialement