| Compiler les clients <<< |
Comment faire un client MySQL threadé | libmysqld, la librairie du serveur embarqué MySQL >>> |
8.4 Interface C pour MySQL 8 Les interfaces pour MySQL Manuel de Référence MySQL 4.1 : Version Française . Types de données de l'API C . Vue d'ensemble des fonctions de l'API C . Description des fonctions de l'API C . Description des fonctions threadées de C . Description des fonctions C du serveur embarqué . Questions courantes sur la librairie C . Compiler les clients ->Comment faire un client MySQL threadé . libmysqld, la librairie du serveur embarqué MySQL |
8.4.8 Comment faire un client MySQL threadé
La librairie cliente est presque compatible avec les threads. Le problème le plus important est les routines de net.c qui lisent les sockets, et qui ne sont pas compatibles avec les interruptions. Cela a été fait en imaginant que vous souhaitiez vos propres alarmes, qui pourraient interrompre une lecture trop longue. Si vous installez des gestionnaires d'interruption pour l'alarme SIGPIPE , la gestion des sockets devraient être compatible avec les threads. Dnas les anciennes versions binaires que nous distribuions sur notre site web, ( http://www.mysql.com/ ), les librairies clientes étaient normalement compilées avec l'option de compatibilité avec les threads (les exécutables Windows sont par défaut compatible avec les threads). Les nouvelles distributions binaires doivent disposer des deux librairies, compatibles ou non avec les threads.Pour obtenir une client threadé où vous pouvez interrompre le client avec d'autres threads, mettre des délais d'expiration lors des discussions avec le seveur MySQL, vous devriez utiliser les librairies -lmysys , -lmystrings et -ldbug , ainsi que net_serv.o que le serveur utilise. Si vous n'avez pas besoin des interruption ou des expirations, vous pouvez compiler simplement une librairie compatible avec les threads, (mysqlclient_r) et l'utiliser. API C pour MySQL . Dans ce cas, vous n'avez pas à vous préoccuper du fichier net_serv.o ou des autres librairies MySQL.Lorsque vous utiliser un client threadé et que vous souhaitez utiliser des délais d'expiration et des interruptions, vous pouvez faire grand usage des routines du fichier thr_alarm.c . Si vous utiliser des routines issues de la librairie mysys , la seule chose à penser est de commencer par utiliser my_init() ! Fonctions de threads C . Toutes les fonctions, hormis mysql_real_connect() sont compatibles avec les threads par défaut. Les notes suivantes décrivent comment compiler une librairie cliente compatible avec les threads. Les notes ci-dessous, écrites pour mysql_real_connect() s'appliquent aussi à mysql_connect() , mais comme mysql_connect() est obsolète, vous devriez utiliser mysql_real_connect() ).Pour rendre mysql_real_connect() compatible avec les threads, vous devez recompiler la librairie cliente avec cette commande :
Si vous appelez une fonction MYSQL, avant que le thread n'ai appelé mysql_init() ou mysql_connect() , le thread ne va pas avoir les variables spécifiques en place, et vous risquez d'obtenir un core dump tôt ou tard. Pour faire fonctionner le tout proprement, vous devez suivre ces étapes :
|
| << | Comment faire un client MySQL threadé | >> |
| Compiler les clients | Interface C pour MySQL | libmysqld, la librairie du serveur embarqué MySQL |