Module MySQL
#1
Michael Ortmann a adapté le module MySQL (initialement créé par BarkerJr) pour pouvoir utiliser MySQL sans avoir à charger le package TCL.

Pour l'installer
Pré-requis: libmysqlclient-dev
  1. Téléchargez le module depuis nos scripts ou sur le github
  2. Placez le dans ~/eggdrop-1.9.5/src/mod/
  3. Décompressez le module
  4. Recompilez eggdrop (cd ~/eggdrop-1.9.5/ & ./configure & make config & make & make install)
  5. Ajoutez loadmodule mysql à votre fichier .conf
  6. Rehashez l'eggdrop

Commandes accessibles en TCL
  • mysql_connect <database> <hostname> [user] [password] [socket|port]
  • mysql_close
  • mysql_query <query>
  • mysql_escape [byte] <string>
  • mysql_errno
  • mysql_ping
  • mysql_connectioninfo
  • mysql_insert_id
  • mysql_connected
  • mysql_affected_rows
Présent sur le Tchat francophone
Répondre
#2
Petit ajout: en commençant à écrire une documentation sur ce module, je me suis rendu compte qu'il ne renvoyait pas d'idx de connexion à la base, et effectivement tout se fait en interne dans le module.
Ce qui signifie que pour plus de sécurité vous devez toujours fermer la connexion à la base après avoir effectué vos requêtes, et donc l'ouvrir juste avant. Ainsi, si vous avez plusieurs scripts qui utilisent ce module, vous êtes certain de la connexion en cours, à moins d'avoir le manque de chance qu'il y en ait deux qui s'ouvrent de manière concomitante.

Je ferai plus de tests dès que possible, quitte à voir si je ne peux pas modifier le module pour qu'il intègre un idx.
Présent sur le Tchat francophone
Répondre
#3
Que se passe-t-il si un script ouvre une connexion à la db, qu'un autre script fait de même, et que le premier script ferme la connexion avant que le deuxième ait fini de l'utiliser ?
Toute l'actualité de mes scripts ici (dernière mise à jour le 03/04/2025)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
Répondre
#4
(03/05/2024, 16:19)MenzAgitat a écrit : Que se passe-t-il si un script ouvre une connexion à la db, qu'un autre script fait de même, et que le premier script ferme la connexion avant que le deuxième ait fini de l'utiliser ?

C'est exactement la discussion que j'ai actuellement avec mortmann, d'où la modification que je vais tenter de faire sur le module pour avoir un idx de connexion afin d'utiliser la bonne (même lors de la fermeture)
Présent sur le Tchat francophone
Répondre
#5
Réponse plus précise pour tous:
- le module n'ouvre qu'une seule connexion à la fois, si une connexion existe déjà il l'écrase avec la nouvelle
- par voie de conséquence, il n'y a qu'une connexion a fermer, indépendamment du script qui l'appelle
Présent sur le Tchat francophone
Répondre
#6
Une version multi-connexions est maintenant disponible sur https://scripts.eggdrop.fr/details-MySQL-s266.html

C'est une version béta que j'ai adapté avec l'aide de copilot. Pour la petite histoire, j'avais envie de tester copilot et l'évolution de ce module m'a semblé être une bonne idée de test, suffisamment petit pour que je comprenne les modifications faites et facile à tester.

A l'utilisation du module, peu de différences mis à part qu'à l'initialisation d'une connexion avec mysql_connect on récupère un handle (mysqlX) qui peut ensuite être utilisé comme premier argument des autres commandes mysql pour préciser la connexion qu'on utilise.

Si vous rencontrez un bug, merci de le déclarer sur https://github.com/crazycatdevs/mysql.mod/issues
Présent sur le Tchat francophone
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit - Discutez en toute liberté - Transitionnez vers Linux - Discussions dans le Lauragais - Communauté LGBT respectueuse - soutien aux victimes de cybermalveillance - pour les filles par les filles