Bases de données HS : Trop d'utilisateurs ? - SQL/NoSQL - Programmation
Marsh Posté le 15-08-2025 à 18:01:44
T'aurais pas un code moisi qui laisse des connexions ouvertes par milliers ?
Ah et évidemment fais un
SHOW VARIABLES LIKE 'max_user_connections'
(ou truc du genre) pour voir si par hasard la valeur n'aurait pas été forcée à 1 ou je sais pas quoi...
Marsh Posté le 16-08-2025 à 08:00:43
+1 avec TotalRecall, c'est quoi comme site ?
Les pages Free on toujours été super limité en terme de puissance, surtout niveau sql.
Et comme c'est du mutualisé, ça peut aussi le voisin qui pompe dans les ressources, sql moins rapide, connexion plus longue et pas possibilité d'en ouvrir une autre en parallèle.
Tu devrais essayer de "déplacer ton site" (changer le nom du dossier par exemple) si c'est possible pour voir si ça résout ton problème tu as peut être effectivement bcps trop de visiteur pour ce que peut encaisser une page free.
Marsh Posté le 16-08-2025 à 12:15:56
Bonjour,
Grand merci pour vos réponses, car le site déconne toujours, des fois il marche bien, des fois inaccessible ... Or il existe depuis 2008, il a son petit succès, c'est vrai, mais bon je pense pas qu'il y a un pic de fréquentation en ce moment (enfin c'est possible aussi, qui sait ?)(j'ai mis un nouveau header tout mignon récemment )
Alors par contre.
Même si j'ai tout programmé le site en PHP/MySql, ... c'était y a longtemps d'une part, d'autre par je suis pas un as en informatique, j'ai donc beaucoup perdu et pour vos réponses : je comprend que dalle
C'est quoi un "SHOW VARIABLES LIKE 'max_user_connections'" je mets ça où ?
Alors pour l'instant je ne donne pas l'url, car vu mes faibles connaissances , j'ai peur qu'un pirate qui lirait ça me bousille le site...
Marsh Posté le 16-08-2025 à 15:26:19
Ton site à vraiment besoin d'être en php/mysql ?
Combien tu as de pages ?
A quel fréquence tu fait des modifications ?
Qu'est ce qui est dynamique dans tes pages ?
Tu ne peux pas mettre l'équivalent en page html statique pour soulager les requêtes sql (ou au moins avoir une espèce de cache par exemple plutôt que reconstruire le menu avec une requête si il est dynamique le faire et l'écrire dans un fichier html que tu pourras inclure...
Marsh Posté le 16-08-2025 à 16:29:09
Vosges88 a écrit : Bonjour, Alors par contre. Même si j'ai tout programmé le site en PHP/MySql, ... c'était y a longtemps d'une part, d'autre par je suis pas un as en informatique, j'ai donc beaucoup perdu et pour vos réponses : je comprend que dalle C'est quoi un "SHOW VARIABLES LIKE 'max_user_connections'" je mets ça où ? Alors pour l'instant je ne donne pas l'url, car vu mes faibles connaissances , j'ai peur qu'un pirate qui lirait ça me bousille le site... |
La commande que je te donnais sert tout simplement à vérifier si une limite a été paramétrée sur le nombre de connexion, et tu la mets dans ton outil de gestion de bdd mysql.
Et pour faire court, une connexion SQL quand on en a plus besoin ça se ferme, sinon elle reste ouverte et au bout d'un moment le serveur n'est pas content. A un moment t'auras pas le choix, faudra bien soit nous partager les sources de ton truc, soit aller voir toi même, là on va pas pouvoir t'aider plus
Et tu fais bien de te méfier des amateurs de piratage, parce qu'un site amateur en PHP de 17 ans, ça doit sentir bon le GET universel, les magic quotes et l'injection SQL.
Marsh Posté le 16-08-2025 à 16:53:43
Bah ce que je vais faire dans un 1er temps c'est vous donner mon site en message privé.
J'avais fait une formation en php/Mysql il y a 22 ans, je m'en suis servi pour construire mon site qui est donc très vieux.
Et oui il faut des BDD, pour simplifier il y a des page html qui affiche du contenu en consultant les BDD. Certaines BDD ont 10 000 entrées...
Marsh Posté le 16-08-2025 à 17:01:31
L'adresse publique du site ne peut être d'aucune utilité
Par ailleurs pour ma part je n'apporte pas d'aide en privé, le principe du forum c'est que tout échange utile doit pouvoir profiter à tous, mais bien sûr quelqu'un d'autre de plus souple là-dessus voudra peut être te répondre en privé.
Site vieux ou pas j'en reviens à ce que je disais : toute connexion SQL doit être gérée et fermée proprement, c'est la base donc le premier truc à contrôler...
Marsh Posté le 16-08-2025 à 17:02:31
TotalRecall a écrit : |
Désolé mais je comprends toujours pas :
"tu la mets dans ton outil de gestion de bdd mysql" : c'est quoi un outil de gestion BDD, PhpMyadmin ?
Et si c'est PhpMyadmin, je fais quoi du code que tu m'as donné, je le mets où ? je le teste comment ?
Marsh Posté le 16-08-2025 à 17:04:57
TotalRecall a écrit : L'adresse publique du site ne peut être d'aucune utilité |
C'est la 1ère fois que j'entends qu'il faut fermer une connexion SQL
On fait comment ?
Marsh Posté le 16-08-2025 à 17:08:53
TotalRecall a écrit :
|
On veut pas le site entier, juste un truc qui se connecte à la base et qui fait une requête, pour voir ce que t'as utilisé.
Marsh Posté le 16-08-2025 à 17:18:14
TotalRecall a écrit : |
Bah ça j'en ai des dizaines sur mon site,
exemple :
require("adm/based.php" );
mysql_connect($serveur,$log,$pas);
mysql_select_db("$base" );
$requetn = "SELECT ID, nom , truc, adresse, vu, texte, com FROM nom where ID=$id";
$resultn = mysql_query($requetn);
$lignen = mysql_fetch_assoc($resultn);
$nomn=$lignen['nom'];
Marsh Posté le 16-08-2025 à 17:51:00
Incroyable, j'ai compris "SHOW VARIABLES LIKE 'max_user_connections'"
Il fallait le mettre dans SQL tout simplement, et ça marche :
max_user_connections 10
Comment faire pour l'augmenter ?
Marsh Posté le 16-08-2025 à 18:21:50
Vosges88 a écrit : $requetn = "SELECT ID, nom , truc, adresse, vu, texte, com FROM nom where ID=$id"; |
Je suis pas spécialiste du PHP mais je dirais ça sent très mauvais l'injection SQL ça. Renseigne toi et passe le site en statique (HTML) ou modifie le code au plus vite!
Marsh Posté le 16-08-2025 à 20:42:26
Vosges88 a écrit : |
En théorie, il manque un mysql_close($connection);, et le connect devrait ressembler à : $connection = mysql_connect($serveur, $log, $pas);
En pratique il me semble que les vieilles versions de PHP avaient un bricolage dégueulasse planqué quelque part pour fermer ça automagiquement à la fin de chaque script, mais c'est comme les magic quotes : ça ressemble à une bonne idée pour faciliter la vie aux débutants, jusqu'à ce que ça finisse en horrible drame.
et +1 pour l'injection SQL probable. Tant que tu fais que du SELECT et que t'as AUCUNE donnée sensible dans ta base (pas même un nom d'utilisateur) ça peut passer, mais c'est pas génial quand même .
Marsh Posté le 17-08-2025 à 08:36:09
Vosges88 a écrit : |
Tu fais un
Code :
|
A chaque fois que tu fais une requête (donc pluisieurs fois par page ?).
Perso je conseille s de mettre le mysql_connect et le mysql_select_db dans le fichier adm/based.php et de faire des require_once de ce fichier au lieu de require, ce sera déjà un peu plus propre.
D’où vient $id, est tu sur que c'est bien un chiffre ?
Il faut le "nettoyer" pour être sur d’être à l’abri d'injection SQL :
https://www.php.net/manual/fr/secur [...] ection.php
Autre exemple : comment tu nettoie "Deneuve" avant de te faire ta recherche dans /cherche_film.php?texte=deneuve&select=tout ?
Marsh Posté le 17-08-2025 à 11:50:47
Comme d'habitude je comprends pas tout.
En tout cas, oui le $ID est bien un chiffre qui vient de la page précédente :
$id=intval($_GET["ID"]);
"comment tu nettoie "Deneuve" avant de te faire ta recherche dans /cherche_film.php?texte=deneuve&select=tout ?"
Je nettoie rien du tout. Le nouveau nom est recherché dans la nouvelle requète, il remplace l'ancien.
Marsh Posté le 17-08-2025 à 11:57:23
Mon site chez free marche bien chez moi pendant une minute, puis il plante.
Par contre http://phpmyadmin.free.fr/phpMyAdmin/ fonctionne normalement maintenant.
La piste serait donc que le site marche trop bien, et avec le max user à 10, c'est là que ça doit planter, alors soit allons y avec vos conseils pour améliorer mes vieux scripts, la fermeture d'une cession SQL, ça je savais pas que ça existait, si vous me donnez le bon code, je vais passer beaucoup de temps à "tenter" de le mettre en place, ne parlons pas des autres défauts de mes vieux scripts, là je risque de vous embéter encore plus.
Soit, bonne nouvelle, le site fonctionne bien, pas la peine de le modifier, mais il plante si trop visité, donc là il faudrait changer le max_user...
Marsh Posté le 17-08-2025 à 12:22:29
Désolé, mais je crois que tu sous-estimes largement la situation: Ton site est vulnérable aux injections SQL, un "outil" de base de tout pirate informatique. Il suffit d'une commande (injectée) pour tout casser (tu as une copie locale au moins?) ou mettre des cochonneries. Donc soit tu remets ça au propre très rapidement, soit tu déconnectes le site jusqu'à avoir le temps de régler ça. La c'est une bombe à retardement.
Marsh Posté le 17-08-2025 à 14:12:56
rat de combat a écrit : Désolé, mais je crois que tu sous-estimes largement la situation: Ton site est vulnérable aux injections SQL, un "outil" de base de tout pirate informatique. Il suffit d'une commande (injectée) pour tout casser (tu as une copie locale au moins?) ou mettre des cochonneries. Donc soit tu remets ça au propre très rapidement, soit tu déconnectes le site jusqu'à avoir le temps de régler ça. La c'est une bombe à retardement. |
Oui, je programme tout en local, donc j'ai forcément une copie.
Moi je demande pas mieux que de réparer mon site, mais encore une fois, j'ai beaucoup perdu en programmation, donc je demande ici que l'on m'aide, ligne par ligne j'ai envie de dire, comment on pourrait faire ?
Marsh Posté le 17-08-2025 à 16:06:39
C'est un site d'entraide, on donne des solutions pour s’améliorer mais on ne bosse pas gratuitement.
Quand tu dit que tu as une copie local, tu parles des fichiers php, mais a quel frequence tu sauvegarde ta base de donnée free (à ma connaissance il n'y a pas de backup versionné dans le temps chez Free, ce qui peut se comprendre pour un service "gratuit" ).
Mon conseil fait une sauvegarde une fois par mois de ta base de donnée via phpmyadmin (un export complet sera suffisant).
Tu fait un $id=intval($_GET["ID"]); c'est très bien, tu t'attend à un chiffre et tout autre caractère sera transformé en 0 donc aucun risque avec cette requête.
Ce qui est plus compliqué c'est les mots / phrases car il y a des phrases qui ont plus de sens en SQL qu'en anglais.
Si tu envoie dans l'url "/cherche_film.php?texte=jesuisungroshacker!' AND DROP DATABASE nomdelabasededonne" tu vas être bien embêté si tu n'as pas protégé ta requête.
Maintenant il vaux mieux passer par PDO avec des requête préparé.
https://www.pierre-giraud.com/php-m [...] -preparee/
Premier résultat Google pour "php mysql pdo requete prepare tuto", lut en diagonal et ça avait l'air pas mal.
Mais tu peux aussi utiliser https://www.php.net/manual/en/funct [...] string.php ou une regex qui supprime tout les caractères non désiré (ponctuation, guillemet, etc.).
Marsh Posté le 17-08-2025 à 17:03:32
+1 avec mechkurt. Si tu veux une aide personnalisée "ligne par ligne" va valloir trouver (et payer!) un prof privé. Je suis parfois (trop souvent) disons surpris par les attentes des gens...
Marsh Posté le 18-08-2025 à 10:30:19
Vosges88 a écrit : Bonjour, |
Bonjour !
Qu'appeller vous "Mes BDD" ?
Marsh Posté le 18-08-2025 à 10:33:48
Si vous cherchez un vrai SGBDR, Access de Microsoft est un sysème de gestion de base de données relationnelle.
C'est une application faisant parti de la suite Office.
Si vous rogrammez ; Je vous invte à profiter des bibliothèque de Adacore.
Marsh Posté le 18-08-2025 à 10:41:32
lady287 a écrit : Si vous cherchez un vrai SGDBR, Access de Microsoft est un sysème de gestion de base de données relationnelle. |
Et tout ça fonctionne tellement bien pour faire du web chez un hébergeur gratuit en plus, c'est la solution parfaite pour ce topic c'est sûr...
Marsh Posté le 18-08-2025 à 10:43:38
rat de combat a écrit : +1 avec mechkurt. Si tu veux une aide personnalisée "ligne par ligne" va valloir trouver (et payer!) un prof privé. Je suis parfois (trop souvent) disons surpris par les attentes des gens... |
+2
J'ai pas pris le temps de répondre aux derniers posts mais je suis d'accord avec tout, là c'est comme si tu nous demandais de réécrire bénévolement tout ton site.
Marsh Posté le 18-08-2025 à 10:43:49
TotalRecall a écrit : |
Je sais ; J'ai pas besoin de vous pour confirmer.
Marsh Posté le 18-08-2025 à 10:51:00
A propos du langage Ada ; Qui est un des langage les plus robuste. (je connais que celui - ci) ; Il existe plusieurs compilateurs.
Je n'ai en revanche aucune idée de la disponibilité des bibliothèques nécéessaire ici.
Marsh Posté le 18-08-2025 à 10:59:52
lady287 a écrit : |
Marsh Posté le 18-08-2025 à 11:09:33
Le poids du message pour rien ?
Marsh Posté le 18-08-2025 à 11:52:22
Mais je veux bien payer un prof privé, donner moi des adresses et je les contacte.
Ma BDD (base de données) je fais des ajouts une fois par mois.
Et en fevrier, elles étaient vérolées, j'ai tout remis en ligne.
Franchement je vais pas bien là, mon vieux site marche bien depuis des années, ainsi que mes vieilles BDD, je crains que seul j'arriverai pas à le reprogrammer, par contre les BDD sont relativement simples, elles pourraient servir à une refonte complète du site, il me faudrait un programmateur "honnéte"...
Marsh Posté le 18-08-2025 à 13:10:06
Alors ta question n'est pas dans la bonne catégorie.
Règle [0C] On ne fait pas le boulot à votre place.
Apparemment il faut poster ce genre de demande sur https://forum.hardware.fr/hfr/Emplo [...] _sujet.htm
Personnellement, je suis désolé mais je n'ai ni le temps, ni l'énergie de refaire ton site (même contre de l'argent ).
Marsh Posté le 19-08-2025 à 11:58:17
Alors au delà de la programmation.
Je me demande si mon site n'est pas sur-visité par un robot.
Car j'ai des statistiques de mon site, que j'ai programmé moi-même, je sais quelles fiches sont visité, et surprise, c'est la fiche 0 , une fausse fiche qui est la plus visité !
Bref, il y a fort à parier que c'est un robot qui sur-visite mon site.
Mais là encore j'y connais rien, comment empêcher cet intrus ?
Marsh Posté le 19-08-2025 à 12:28:39
Robots.txt, etc.
Mais ça ne marche qu'avec les gentils robots coopératifs.
Marsh Posté le 20-08-2025 à 11:47:13
merci, j'ai mis un robots.txt à la base du site avec :
User-agent: *
Disallow: /
çà va comme ça ?
ou faut-il ajouter des lignes en citant de potentiel "mauvais" robots, si oui, pouvez-vous m'envoyer les lignes au format texte à ajouter au fichier ?
Marsh Posté le 20-08-2025 à 13:07:07
Tu veux vraiment empêcher l'indexation de toutes les pages de ton site par les robots ?
Tu ne veux pas que ton site figure dans les recherches Google ou autre ?
Sachant que comme le dit TotalRecall, les "méchants bots" ne tiennent aucun compte du robots.txt
Marsh Posté le 15-08-2025 à 17:15:46
Bonjour,
Mes BDD Free ne répondent plus :
Avec ce genre de message :
#1203 - User ..... already has more than 'max_user_connections' active connections
Et c'est tout le site qui est inaccessible avec Filezila, chrome, edge
Vous auriez une solution ?