Mehrplatz Nutzung i...
 
Benachrichtigungen
Alles entfernen

Mehrplatz Nutzung im Lan/VPN mit NAS

25 Beiträge
7 Benutzer
3 Reactions
1,716 Aufrufe
(@rheydenr)
Forum-Admin Registered
Beigetreten: vor 14 Jahren
Beiträge: 4911
 

Moin,

Veröffentlicht von: @udo

Wenn ich das richtig verstehe, dann heißt das: Wenn mehrere Fakturama-Installationen auf die gleiche db zugreifen (was möglich ist), dann sollte sichergestellt sein, dass immer nur ein Benutzer fakturama gleichzeitig gestartet hat.

Das ist korrekt. Die Idee mit der Batchdatei funktioniert denke ich auch, allerdings müßtest Du die Zeile mit der Pause um eins nach unten verschieben (nach dem Aufruf der EXE).


Viele Grüße
Ralf.
Wichtige Infos zum Posten im Forum.
Fehler gefunden?


   
AntwortZitat
 udo
(@udo)
Eminent Member
Beigetreten: vor 2 Jahren
Beiträge: 25
 

Unter Win ist das etwas undurchsichtig, wie Batch-Dateien funktionieren (unter Linux ist das m. E. einfacher): Mal wird gewartet, bis ein Befehl abgearbeitet ist und dann erst die nächste Zeile gestartet und mal nicht.

Wenn ich die pause nach dem copy-Befehl weglasse, wird nach meinen Tests fakturama nicht automatisch gestartet, die batch blieb sogar hängen (keine Ahnung warum). Die pause muss also sein.

Wenn fakturama gestartet ist, dann wartet die Batch, bis fakturama geschlossen wird und löscht erst dann die lock-Datei. Demnach braucht man hier keine pause. Insofern sollte es so richtig sein.

-------------------------------------

Hier mal eine bash-Variante für Linux. Da liegt die lock-Datei auf einem FTP-Server, die zunächst in ein lokales Verzeichnis (verzftp muss vorhanden und leer sein) gemountet wird und dann normal abgefragt werden kann (Entsprechendes habe ich unter Win nicht hingekriegt).

#!/bin/bash 
verzftp="/home/Nutzer/ftp-fakturamalock"
ftppas="<Mein-FTP-Passwort>"
curlftpfs <FTP-Benutzername>:$ftppas@<FTP-servername>/fakturamalock $verzftp -o allow_other,disable_eprt,tlsv1
if [ ! -f $verzftp/.lock ]; 
then
  echo "Lockdatei nicht vorhanden!"
  touch $verzftp/.lock
  /usr/share/fakturama2/Fakturama
  rm $verzftp/.lock
else
 echo "Lockdatei vorhanden!"
 gxmessage "Kann fakturama nicht starten. Jemand anderes im Netz benutzt es schon!"
fi
fusermount -u $verzftp

 

In diesem Fall liegt die lockdatei auf dem Server im Verzeichnis fakturamalock. Natürlich müssen gxmessage und curlftpfs installiert sein

 



   
AntwortZitat
(@mikefulurlp)
Trusted Member
Beigetreten: vor 2 Jahren
Beiträge: 37
Topic starter  

... Es gab unter ms dos sowohl Pause als Befehl zum Warten auf Tastendruck als auch wait mit Zeitangabe zb10 Sekunden

 

What is the wait command in cmd?

Parameters

Parameter Description

/t <timeoutinseconds> Specifies the decimal number of seconds (between -1 and 99999) to wait before the command processor continues processing. The value -1 causes the computer to wait indefinitely for a keystroke.

/nobreak Specifies to ignore user key strokes



   
AntwortZitat
(@lastboyscout)
Reputable Member
Beigetreten: vor 10 Jahren
Beiträge: 249
 

Veröffentlicht von: @udo
Die Batch guckt nach, ob die ,lock-Datei existiert. Wenn ja, dann wird fakturama nicht gestartet. Wenn nein, wird die Datei erstellt und fakturama gestartet. Wenn der Benutzer fakturama wieder schließt, wird auch die lock-Datei wieder gelöscht und das Programm somit für andere Nutzer wieder freigegeben.

Eine schöne Idee... Allerdings ist diese Datei ohne Inhalt und es erfolgt nur eine Einzige Prüfung ob sie vorhanden ist. Stattdessen sollte m.E. in die Datei der Rechnername des Arbeitsplatz von dem aus Sie erstellt wird geschrieben werden:

echo %computername% > %lockdatei%

Damit liese sich zum einen Anzeigen für welchen Arbeitsplatz ggf. bereits eine Sperrung erfolgte und sollte dies der eigene sein (z.B. weil der Batch vor dem schließen von Fakturama abgebrochen wurde) könnte der Programmstart dennoch erfolgen ohne die lock-Datei erst selbst löschen zu müssen. Wichtiger wäre aber das nach Erstellung einer lock-Datei und vor dem Programmaufruf von Fakturama, nochmal geprüft wird ob der Inhalt der Lock-Datei mit dem Rechnernamen identisch ist und der lock somit tatsächlich für den eigenen Arbeitsplatz erfolgte. Damit wären dann auch evtl. Konflikte bei einem Zeitgleichem Programmaufruf abgefangen. Ergo: Nur der Arbeitsplatz dessen Rechnername tatsächlich in der Lock-Datei steht darf A = das Programm starten und B = die Lock-Datei wieder löschen. Alle anderen zeigen nur an von wem die Daten exklusiv in Beschlag genommen wurden.

 


Fakturama 2.1.3 auf Win10 pro x64 an MariaDB auf ner DiskStation


   
AntwortZitat
 oko
(@oko)
Trusted Member
Beigetreten: vor 7 Jahren
Beiträge: 49
 

Bevor sich hier jetzt alle auf die Batch/Bash Variante des Locking stürzen...
Besser wäre es, das direkt in Fakturam zu integrieren (inkl. User & Name), so war auch mein ursprünglicher Post gedacht.

@rheydenr siehst du, vom Zeitaufwand her, ne Chance das einzubauen?



   
AntwortZitat
 udo
(@udo)
Eminent Member
Beigetreten: vor 2 Jahren
Beiträge: 25
 

@lastboyscout 

 

du hast recht, das wäre natürlich komfortabler.

In einem Punkt würde ich dir aber widersprechen: Konflikte bei einem zeitgleichem Programmaufruf sehe ich nicht, denn die lockdatei wird vor dem fakturama-Programmaufruf erzeugt und erst nach Beendigung gelöscht. Ich sehe daher kein Mini-Zeitfenster, in dem ein gleichzeitiges Starten von fakturama auf zwei Rechnern möglich wäre. Korrigier mich, wenn ich mich irre



   
AntwortZitat
(@lastboyscout)
Reputable Member
Beigetreten: vor 10 Jahren
Beiträge: 249
 

@oko
Ja das wäre natürlich echt Wünschenswert de facto muss man aber wohl einsehen, dass dies einen ziemlichen Aufwand nach sich zieht und etliche andere Featurewünsche (siehe Bug Tracker) noch wesentlich mehr Priorität haben dürften und das auch für eine größere Anzahl an Anwendern. Das Programm wird ja hauptsächlich von Ralf allein nebenher weiterentwickelt und solange da nicht mehr qualifizierte Unterstützung in Sicht ist, ist mit schnellen großen Entwicklungsschritten kaum zu rechnen.

@udo
Ob denn die Lock-Datei auch tatsächlich erstellt werden konnte ist zum Zeitpunkt des Programmaufruf ja völlig unbekannt... Du gehst einfach nur davon aus! Es geht eben nicht nur darum ein potenziell möglichen Konflikt bei einem Zeitgleichen Programmstart (so gering dies auch erscheinen mag) abzufangen, sondern auch zu prüfen ob die Lock-Datei für den jeweiligen Arbeitsplatz auch tatsächlich erstellt wurde (Stichwort fehlende Schreibrechte auf dem Netzlaufwerk). Wenn solch offensichtliche Konstellationen nicht berücksichtigt werden, bringt es keinen Mehrwert und wiegt Anwender m.E. nur in falscher Sicherheit.


Fakturama 2.1.3 auf Win10 pro x64 an MariaDB auf ner DiskStation


   
rheydenr reacted
AntwortZitat
(@rheydenr)
Forum-Admin Registered
Beigetreten: vor 14 Jahren
Beiträge: 4911
 

Moin, aktuell sehe ich da wirklich keine Chance. Da sind andere Dinge derzeit wesentlich höher priorisiert...


Viele Grüße
Ralf.
Wichtige Infos zum Posten im Forum.
Fehler gefunden?


   
AntwortZitat
(@mikefulurlp)
Trusted Member
Beigetreten: vor 2 Jahren
Beiträge: 37
Topic starter  

.. hallo Leute,

zuallererst mal einen ganz großes Danke Lob und Anerkennung für die unglaublich intensive Beteiligung an einem Thema, das ich eigentlich ohne viele Erwartungen in das Forum gestellt habe.

Da würde ich doch glatt sagen alle zehn Daumen rauf 👍🏻

 

Zusammenfassend als Quintessenz aus der Gesamtdiskussion: 

  • Das Programm ist aktuell nicht zum Mehrplatznutzung vorgesehen 
  • Das Programm kann durchaus von mehreren PCs benutzt werden, aber nicht zeitgleich!
    • Das Dateiverzeichnis und Datenbank Verzeichnis muss dann aber für alle erreichbar sein 
    • Die Datenbank muss entweder auf jedem PC installiert sein und die datenbankdatei von der Freigabe erreichen 
    • Oder die Datenbank wird auf einem eigenen Datenbank Server beispielsweise PC, raspberry, oder Synology NAS mit Maria dB abgelegt und dann vom jeweils aktiven Rechner benutzt
  • Eine gleichzeitige Nutzung von mehreren Geräten ist nicht empfohlen und würde Inkonsistenzen möglicherweise verursachen -- Kurzfristig ist eine Abänderung der Software nicht vorgesehen weil andere Themen Priorität haben !

Aber:

Das Programm ist Multimandanten-fähig, dafür über Startparameter (vgl Handbuch) das passende Datenverzeichnis (u.a. wegen Vorlage Rechnung Logo etc) angeben

 

Wunsch and Handbuch:

.. Eine Dokumentation zum externe Datenbank einrichten und nutzen (etwas konkreter mit Bsp Synology/Raspi MarioDB MySQL)
das wäre toll aber nicht prio ^^ .. hier war ich als EInsteiger klar (über)fordert

 

 



   
AntwortZitat
 udo
(@udo)
Eminent Member
Beigetreten: vor 2 Jahren
Beiträge: 25
 

@LastBoyScout

Jetzt verstehe ich, was du meinst. Und du hast recht: Perfekt ist das nicht. Ich habe deshalb jetzt mal drangesetzt und Prüfroutinen in die Skripte eingebaut:

Windows-Batch

Die Batch prüft jetzt, ob die lock-Datei erstellt werden konnte. Wenn nicht, erfolgt ein Abbruch

@echo off

set lockdatei=C:\fakturama\.lock
set fakturamaexe="C:\Program Files\Fakturama2\Fakturama.exe"

IF EXIST %lockdatei% (
 echo Kann Fakturama nicht starten. Jemand anderes benutzt es schon!
 pause
 ) ELSE (
 echo Kann Fakturama starten. Erstelle jetzt die lock-Datei  
 pause
 copy NUL %lockdatei% && (
  echo lock-Datei erfolgreich erstellt
  echo Ich starte jetzt fakturama. DIES FENSTER OFFEN LASSEN. Es schliesst sich nach dem Beendigen von fakturama automatisch!
  pause
  %fakturamaexe%
  del %lockdatei%
 ) || (
  echo FEHLER: Konnte die lock-Datei %lockdatei% nicht erstellen! Skript abgebrochen
  pause
 )
) 

 

 

Linux bash

Entsprechend beim Linux-bash. Hier wird noch zusätzlich geprüft, ob eine Verbindung zum FTP-Server hergestellt werden konnte

#!/bin/bash 
verzftp="/home/<Nutzername>/ftp-fakturamalock"
ftppas="<FTP-Passwort>"
if 
 curlftpfs <FTP-Benutzername>:$ftppas@<FTP-Servername>/fakturamalock $verzftp -o allow_other,disable_eprt,tlsv1
then
 echo "Verbindung zum lock-Pfad erfolgreich"
 error="0"
else
 gxmessage "Verbindung zum lock-Pfad NICHT erfolgreich. Skript wird beendet"
 error="1"
fi
if [ $error == "0" ]
then
 if [ ! -f $verzftp/.lock ]; 
 then
   echo "Lockdatei nicht vorhanden!"
   if
    touch $verzftp/.lock
   then 
    /usr/share/fakturama2/Fakturama
    rm $verzftp/.lock
   else
    gxmessage "Konnte lock-Datei nicht erstellen. Skript wird beendet"
   fi
 else
  echo "Lockdatei vorhanden!"
  gxmessage "Kann fakturama nicht starten. Jemand anderes im Netz benutzt es schon!"
 fi
 fusermount -u $verzftp
fi

 

Ich denke, das Schlimmste, was jetzt noch passieren kann, ist, dass die lock-Datei nicht gelöscht wird nach dem Beendigen von fakturama. Aber gut, in den seltenen Fällen muss man dann halt alles beenden und die Datei händisch löschen.

 



   
AntwortZitat
Seite 2 / 2
Teilen: