[RESOLU] Connexion PHP MySQL non fermée mais abandonnées

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 : [RESOLU] Connexion PHP MySQL non fermée mais abandonnées

Re: [RESOLU] Connexion PHP MySQL non fermée mais abandonnées

par @rthur » 23 sept. 2022, 18:57

Intéressant d'avoir eu ton retour, car c'est un cas que je ne connaissais pas, merci ! :-D

Re: [RESOLU] Connexion PHP MySQL non fermée mais abandonnées

par Cyrille85 » 23 sept. 2022, 17:28

Le problème venait bien de PDO, avec Mysqli la déconnexion se fait plus proprement

En une journée, j'ai seulement 52 abandons soit moins de 0,01% des connexions contre 80% avant

Re: Connexion PHP MySQL non fermée mais abandonnées

par Cyrille85 » 22 sept. 2022, 16:13

J'avais déjà essayé, ca ne fonctionne pas

Je fait des tests avec mysqli, pour le moment tous mes tests ont l'air de bien clôturer la connexion.

Je vais basculer une partie du site en utilisant des identifiants différents pour voir si ca fonctionne bien

Re: Connexion PHP MySQL non fermée mais abandonnées

par @rthur » 22 sept. 2022, 16:01

Tu peux forcer la fermeture en faisant comme l'exemple #3 de la doc :
https://www.php.net/manual/fr/pdo.connections.php

A ma connaissance il n'y a pas de paramètres qui permettraient de garder ouvertes les connexions, c'est bizarre...

Re: Connexion PHP MySQL non fermée mais abandonnées

par Cyrille85 » 22 sept. 2022, 09:15

J'ai oublié de préciser que j'utilise PHP 7.4.3 et MySQL 8

Re: Connexion PHP MySQL non fermée mais abandonnées

par Cyrille85 » 22 sept. 2022, 09:11

Je me retrouve avec environ 100 connexions simultanées, le seul accèss à MySQL se fait en local via le serveur PHP.

Est-ce qu'il y a un paramètre particulier dans PDO ou PHP .INI qui pourrait faire que les connexions ne se ferment pas tout de suite?

Ou sinon, est-ce qu'il y a une autre méthode que PDO que je pourrais tester?

Re: Connexion PHP MySQL non fermée mais abandonnées

par @rthur » 21 sept. 2022, 18:58

PHP ferme automatiquement les connexions à MySQL à la fin de l'exécution de chaque script, donc à moins d'un cas particulier le comportement que tu observes n'est pas normal.
https://www.php.net/manual/fr/pdo.connections.php

Par ailleurs, 600 requêtes/heure ce n'est pas une grosse utilisation, c'est même plutôt très faible. Bien sûr tout dépend des ressources de ton serveur et des requêtes éffectuées et optimisations de tes tables mais en nombre 10 requêtes/min c'est rien du tout.

Connexion PHP MySQL non fermée mais abandonnées

par Cyrille85 » 21 sept. 2022, 16:00

Bonjour

J'utilise PDO pour de gros accès à mon serveur MySQL (environ 600 reuqêtes/ heures).PHP et MySQL tournent sur le même serveur

Le problème est que j'obtiens des montées en charges de mémoire au fil du temps liés apparemment a des connexions non fermée de MySQL : pour environ 12000 connexions, j'en ai 9960 abandonnées soit environ 80%

J'ai essayé de mettre ma connexion en persistant :
$conn = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', PDO::ATTR_PERSISTENT => true));
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
mais toujours autant d'abandon de connexions.

Je ferme bien mes curseurs après chaque requête SQL.

Je ne comprends pas ce que j'ai oublié.

Comment fermez vous vos accès à la bdd ou bien comment la conservez-vous pendant plusieurs accès (les accès peuvent venir de plusieurs appareils en même temps) ?