Vous devez avoir un serveur fonctionnant sur localhost

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Vous devez avoir un serveur fonctionnant sur localhost

Message par microdevweb »

@omega

1) la BD original ne sera pas exploitable, car elle est en sqlite et devra être recopiée dans un nouveau format mysql / postgresql.

2) pour accéder à une base de donnée en réseau il faut un serveur de base de données, personnellement je créerais une machine virtuel qui agira exactement comme un pc autonome et en linux pour ne pas devoir payer une licence Win.
Sur le net il ne manque pas de tuto
exemple : https://www.youtube.com/watch?v=-LwI4HMR_Eg

3) Il faudra modifier ton soft, la si tu à prévu une même procédure qui se charge de l'accès à la bd cela ne devrais pas demander trop de travail dans le cas contraire et ben...

4) il faut prendre en considération le blocage des records, un record ne peux pas être modifier par deux personnes en même temps etc.

Autre solution moins propre mais réalisable, par journalisation avec un soft qui clone la bd.

Maintenant question, les postes doivent ils avoir les droits en écriture ou pas? Les poste sont'ils accessible via le réseau local? Il existe également des hébergeurs de base de données https://fr.hostadvice.com/hosting-services/mysql/

Il existent de nombreuses solutions au vue du problème à traité.

Maintenant j'avoue n'avoir jamais testé une bd réseaux avec pb, et pour parfaire mes connaissances je vais teste cela dans le courant de la semaine prochaine
Dernière modification par microdevweb le jeu. 13/juin/2019 8:45, modifié 1 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Marc56
Messages : 2145
Inscription : sam. 08/févr./2014 15:19

Re: Vous devez avoir un serveur fonctionnant sur localhost

Message par Marc56 »

J'ai développé un logiciel de gestion commerciale classique en Pb utilisant des Bdd sqlite et qui fonctionne très bien depuis longtemps
Aujourd'hui, mon client souhaite qu'un deuxième agent puisse utiliser ce même logiciel à partir de son pc (pc N° 2), donc les 2 pc doivent travailler pour accéder à la même bdd et effectuer la saisie simultanée etc... Pour celà, il me faut donc un réseau pour partager la base de données entre les 2 pc. Puisque sqlite ne gère pas ce système, j'ai pensé utiliser UseMySqlDataBase() qui (normalement) gère ces opérations.
Mes questions sont les suivantes:
1. Que dois je faire pour réaliser ce projet et par quoi dois-je commencer?
2. Dois-je modifier mon code ? Si oui à quel niveau faut il porter ces modifications?
3. Y a t il qq chose à installer ou à configurer sur les 2 pc ? Quoi et comment?
Si ton application ne faisait que des lectures tu pourrais conserver SQLite en mettant la base sur un dossier partagé sur le réseau.
Si ton application ne faisait des écritures très rapides, tu pourrais aussi conserver cette solution. Ce n'est donc pas valable pour une gestion commerciale.
:arrow: Il faut savoir que lors d'une écriture en mise à jour (UPDATE) SQLite verrouille toute la table en écriture, donc les autres utilisateurs peuvent lire, mais pas modifier d'autres enregistrements. Un système client/serveur verrouille lui au niveau enregistrement, ce qui permet à plusieurs utilisateurs d'écrire sur deux lignes différentes.

Tu dois donc installer une base de donnée de type Client/Serveur. La plus simple est MySQL (mais on lui préfère maintenant MariaDB pour des questions de licence qui sont libres). Inutile d'installer un système LAMP, tu n'as besoin que de la base de données.
(Toute la doc de MySQL est valable pour MariaDB)

Si tu es sous Windows x64 tu vas là
https://downloads.mariadb.org/mariadb/10.3.15/
et tu télécharge le dernier .msi en 64 bits
mariadb-10.3.15-winx64.msi
Sur ton poste principal, en mode admin, tu installe tout par défaut.
Le serveur fonctionne en tant que Service, inutile de le mettre dans une machine virtuelle ou sur une machine dédiée. Deux utilisateurs c'est rien, cela ne va pas ralentir le poste qui l'héberge.

Dans ton application, tu dois juste changer UseSQLiteDatabase par UseMySQLDatabase et la chaine de connexion (voir la doc PB)

Dans l'application elle-même tu remplacera les requêtes UPDATE par des requêtes SELECT ... FOR UPDATE ce qui a pour effet de verrouiller l'enregistrement en cours de modification jusqu'à la validation ou annulation de la transaction (COMMIT / ROLLBACK)

Pour passer tes données de SQLite à MySQL/MariaDB, soit tu exporte et importe les données en CSV, soit toute la base par un Dump (voir Internet SQLite to MySQL)

Bon courage, recherche "select for update" dans les moteurs de recherche pour comprendre comment ça marche, car là ce n'est plus du PB mais du SQL

:idea: From falsam : Meilleure réponse
Avatar de l’utilisateur
omega
Messages : 617
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Vous devez avoir un serveur fonctionnant sur localhost

Message par omega »

Bonjour à tous et merci beaucoup pour toutes ces infos précieuses

Franchement, tout cela me parait assez compliqué, je ne sais plus pour l'instant par quoi commencer sinon fouiller un peu sur le net pour voir d'abords la possibilité de convertir ma base sqlite vers mysql, ensuite je verrais les autres points (la doc sur maria db etc) j'aurais besoin de quelques jours pour arriver aux résultats souhaités. Je vous tiendrais au courant au moment opportun. Merci encore à tous et bonne continuation.
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Vous devez avoir un serveur fonctionnant sur localhost

Message par microdevweb »

Je viens de faire un petit test en installant un machine virtuel ubuntu 18, avec mariaDb,apache2,php et j'ai enfin réussis à me connecter à une db.

J'essayerais certainement de faire un petit tuto la semaine prochaine
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Vous devez avoir un serveur fonctionnant sur localhost

Message par djes »

Il faut que tu te formes un peu sur le client/serveur. Tu le connais déjà un peu puisque c'est la base de l'Internet ! En deux mots un serveur est un programme qui «écoute» en permanence des «requêtes» venant d'un ou plusieurs programmes «clients». Sur Internet ces programmes écoutent sur des «ports» (imagine des canaux de communication par lesquels transitent du ... texte).
Bref, il est très facile de faire un serveur avec pb, de même qu'il est très facile de faire des clients. Tu peux même faire les deux tâches dans un seul programme ! Je t'invite à regarder l'exemple client serveur que j'avais fait il y a quelques temps, de même que l'atomic server dans les exemples officiels.
Répondre