Zugriff auf Dateien im Netzwerk mit php

Du könntest es einerseits deine Änderungen in allen Datenbanken zugleich ausführen, also jeweils übers Netz einfah die einzelnen Datenbanken, eine nach der anderen angesprochen und die Änderung durchgeführt. Das klappt aber nur wenn alle Rechner laufen.

Andererseits müsstest du ein Log führen welches genau festhält was gemacht wurde. Dieses log stellst du halt lokal für die anderen Rechner erreichbar. Wenn ein Rechner das Script startet müsste der die einzelnen anderen Rechner, einen nach den anderen abfragen ob so ein Log exisiert und von wann es ist. Wenn er dieses Log noch nicht kennt muss er es ebenfalls abarbeiten und sich merken das er es abgearbeitet hat.

Ein bisschen einfacher wird es wenn Artikel nur an einem Rechner geändert werden aber mal ganz ehrlich. Ich würde an deiner Stelle deinen Chef nochmal ruhig und unkompliziert erklären was das für ein sinnloses vorhaben ist. Im Grunde bräuchte man die aktuelle Datenbank nur zentralisieren und die Clients drauf ausrichten. Im schlimmsten Fall eine Arbeit von einer Stunde. Bis du dein Abgleich 100% funktionsfähig hast können 1, 2 Tage vergehen ;)
 
Ich weiss ja nicht wie Dein Chef in Sachen PC und dem ganzen Drumherum Ahnungsmaessig ausgestattet ist. Aber vor allen Chefs die keinen Plan von der Sache hat muss man oft mal erklaeren, dass ihre Ideen totaler Kappes sind. Nur weil das der Chef ist muss man nicht immer Ja und Amen zu allem sagen was dem so an Ideen bei der taeglichen Verdauungssitzung in den Kopf geschossen ist. Und Chefs ohne Ahnung kommen zum Teil auf echt wilde Ideen, und dann sollte man sich auch die Zeit nehmen und dem Chef erklaeren, dass man das anders viel besser loesen kann oder, was ja auch schonmal vorkommt, dass es garnicht machbar ist was der sich in den Kopf gesetzt hat.

Damit kommt man meiner Meinung nach auf jeden Fall weiter als immer wenn der Chef fragt wie es denn jetzt mal aussieht sagen muss "Ich arbeite dran.", denn das macht spaetestens beim 3. Mal keinen guten Eindruck.
 
Hallo!

Meine ehrliche Meinung?
Dein Chef hat sie nicht mehr alle.
Ich will nicht sagen dass es unmöglich währe, aber der Aufwand dürfte um einiges höher sein als ein zentraler Server..... von der Performance mal ganz abgesehen.
Hast Du Deinen Chef mal gefragt was Du für diesen unnötigen Mehraufwand bezahlt bekommst?
Ich frage mich wirklich was gegen einen zentralen Datenbankserver spricht.
Je nach Anzahl der Client-PC's würde sogar ein alter Pentium 1 mit einem schlanken Linux ausreichend sein.
Dem Server und/oder der Datenbank könnte man auch "beibringen" welcher Client-PC darauf zugreifen darf.

Client A müsste die zentrale Datenbank komplett abfragen (Performance) und mit der eigenen vergleichen und ggf. fehlende Einträge bei sich eintragen.
Soweit (auch bei mehreren Client-PC's) kein Problem.
Nur muss die zentrale Datenbank ja auch auf dem aktuellsten Stand gehalten werden.
Dazu muss die zentrale Datenbank jede Client Datenbank komplett abfragen (und wieder die Performance) und mit der eigenen vergleichen und ggf. fehlenede Einträge bei sich eintragen.
Soweit eigentlich auch kein Problem.

Nun gut, es werden aber sicherlich nicht nur neue Einträge hinzugefügt, sondern evtl. auch bestehende Einträge geändert.
Woher soll nun aber auch der eine wissen wann wer was und wann geändert hat?
Da dürfte eine weitere Spalte in allen Tabellen weiterhelfen, in der der letzte Änderungszeitpunkt gespeichert wird.
Dürfte vermutlich auch kein Problem darstellen, denn so kann ja jeder bei jedem nachgucken wessen Daten aktueller sind.
Das grössere Problem sehe ich z.b. bei gelöschten Datensätzen.
Client A löscht einen Datensatz, die zentrale Datenbank gleicht dieses ab..... nun kommt aber Client B daher und trägt den von Client A gelöschten Datensatz wieder in der zentralen Datenbank ein.
Denn woher soll Client B wissen, dass Client A den Datensatz gelöscht hat.

Evtl. könnte hier eine weitere Spalte helfen.
Wenn ein neuer Eintrag hinzugefügt wird, wird in diese Spalte z.b. "new" eingetragen.
Beim Abgleich mit der zentralen Datenbank wird dieser Wert auf z.b. "old" geändert.
Wenn nun ein Client feststellt dass er einen Eintrag hat der nicht in der zentralen Datenbank ist, wird nachgesehen ob "new" oder "old" in der Spalte steht.
Wenn "new" drin steht, war dieser Eintrag noch nicht in der zentralen Datenbank eingetragen und wird nun hinzugefügt (und dabei auf "old" geändert).
Wenn aber "old" in der Spalte steht und der Eintrag nicht in der zentralen Datenbank vorhanden ist, weiss der Client dass der Eintrag aus der zentralen Datenbank gelöscht wurde und löscht diesen auch aus seiner eigenen Datenbank.

Damit nicht noch mehr Chaos in die Geschichte kommt, würde ich den Abgleich ausserhalb der Geschäftszeiten (z.b. nachts) durchführen..... ein Cronjob währe hier sicherlich ganz nützlich.
Allerdings müsste der Datenbankserver rund um die Uhr laufen..... und wenn die Client PC's kein wake on LAN unterstützen, müssten auch diese rund um die Uhr laufen.

Kling sicherlich alles verwirrend..... ist es auch. ;)
Ich wüsste nun aber nicht wie man diese Problematik besser erklären könnte.
Auf jedenfall aber sollte Dein Chef sich diese Geschichte auch etwas kosten lassen.

Gruss Dr Dau
 
OK Ok.

Ich weiß das es sehr umständlich ist. Aber was soll ich sagen?

Also, um mein Problem direkt anzusprechen: Ich weiß wie die funktion $datei= fopen("meine_datei.txt","r"); funktioniert. Ich weiß auch wie ich eine TXT auf meinem Lokalen rechner mit php erstelle.
Ist es möglich mit dem Befehl fopen nicht nur eine Datei zu öffnen, zu fixen oder wie man das nennt die auf meinem PC liegt sondern eine zu öffnen/fixen die woanders liegt? Z.B. so: $datei=fopen("\\hauptpc\teile\update.txt")
Versteht sowas php oder muss ich die anwendung umschreiben

Wenn ich weiß wie ich auf so eine Datei zugreifen kann, kann ich mir schon selber was schreiben, das ist nicht das Problem und dann müsst Ihr euch nicht mit meinen PRoblemem, meinem Chef oder so rumschlagen.

Sorry, ist nicht bös' gemeint aber ich brauche ein Lösung für das Problem und keine Diskusion über Firmenpolitik wo ich mich noch weniger auskenne als in php.
 
Das Vorhaben willst Du auch noch mit ASCII Dateien lösen?!
Ach du Sch****..
Noch schlimmer kann es wohl nicht mehr kommen. *denk*
 
Ich bin nicht sicher ob PHP mit den "SMB-Pfaden", also \\irgendeinebox\irgendeinefreigabe, klarkommt. Theoretisch aber sollte das gehen da das eigentlich fuer PHP transparent ueber das VFS von Windows geregelt werden sollte.
Probiert hab ich das aber noch nicht, da ich mit PHP unter Windows eigentlich nichts zu tun hab.
Falls es nicht geht stehst Du erstmal vor einem Problem, denn SMB in PHP zu implementieren duerfte den Rahmen der Geschichte bei weitem sprengen, denn SMB ist nicht wirklich einfach. Eine Loesung waere dann HTTP, da auf den Rechnern sowieso ein Web-Server laeuft kann die Datei auch darueber abgeholt werden.
Oder eben direkt ueber SQL. Dabei koenntest Du beim Update einen Timestamp in der DB speichern. Die Rechner checken dann sagen wir mal bei jedem 50. Aufruf, wenn wieder eine volle Stunde angebrochen ist oder meinetwegen auch bei jedem Aufruf kurz in der Datenbank der anderen Rechner diesen Timestamp. Wenn anhand dessen festgestellt wird, dass ein Update noetig ist (Timestamp groesser als der eigene) werden die aktuellen Daten gezogen.
 
Dennis Wronka hat gesagt.:
Wenn anhand dessen festgestellt wird, dass ein Update noetig ist (Timestamp groesser als der eigene) werden die aktuellen Daten gezogen.
So war auch mein Gedankengang (letzer Änderungszeitpunkt).

Dass er mit ASCII-Dateien Arbeitet *Kopf schüttel* macht die ganze Sache aber nur noch komplizierter als sie ohnehin schon ist.

Du sagst dass Du für die Computer zuständig bist..... hoffentlich bist Du nicht als Programmierer und/oder Netzwerkadministrator eingestellt.
Dann kannst Du jedenfalls (ohne dass Dein Chef an Deinen Fähigkeiten zweifeln kann) einfach sagen "kann ich nicht, aber ich habe da eine viel bessere Idee..... bla bla".
Andernfalls frage ich mich was für ein Chef dass ist, der jemanden einstellt der (wie Du ja selber andeutest) nicht soooo die Ahnung von der Sache hat. ;)
 
Du sagst dass Du für die Computer zuständig bist..... hoffentlich bist Du nicht als Programmierer und/oder Netzwerkadministrator eingestellt.

Nein bin ich nicht. Eigentlich bin ich gelernter Zweiradmechaniker, also ich Repariere Motorräder in einem kleinen Betrieb.

Nur habe ich mir mitlerweile eine gewisse Erkenntnis für'n Computer angeeignet und bisher hat es immer gereicht. Vom programmieren und Pflegen der Homepage bis hin zum kompletten einrichten der Netzwerke haben meine Kenntnisse bisher immer gereicht aber nun sind sie eben bei diesem Projekt etwas erschöpft.

Aber ich sehe schon das ich hier nicht die Hilfe bekomme die ich benötige, ja, die es vielleicht gar nicht so gibt wie ich sie benötige.

Also nochmals herzlichen Dank für eure ganzen Beiträge aber ich werde es mal alleine probieren und , wenn ich es dann geschafft habe es mal hier posten. Oder auch nicht jenachdem ob ich es vielleicht gar nicht schaffe.
Übrigens, ich bekomme für die Computerstunden je 20€ also mit der Bezahlung ist es kein Problem und auch wenn ich länger brauche ist es kein Thema.

Mit freundlichen Grüßen,
Seppi
 
Ich wollte Dein Wissen auch nicht anzweifeln.....
Ich wollte eher sagen dass ein Profi schlecht sagen kann "kann ich nicht"..... wenn, dann sollte er eher sagen "mache ich nicht" und wenn der Auftraggeber nachfragt warum nicht, dann sagt er "weil ich in der selben Zeit mehrere andere Projekte umsetzen kann, mit denen ich mehr verdiene". ;)
Dein Chef kann froh sein dass Du Dein privates Wissen mit in die Firma einbringst..... und wenn ihm Deine Vorschläge (aus welchen Gründen auch immer) nicht passen, kann er ja mal eine Firma damit beauftragen seine Wünsche umzusetzen..... da zahlt er garantiert "etwas" mehr wie 20€/Stunde. ^^
Wenn Du das Vorhaben wirklich umgesetzt bekommst, sollte Dein Chef mal ein neues (von mir aus auch gebrauchtes, aber kein schrottiges) Moped rüberwachsen lassen. ;)

Ich würde aber trotzdem die Finger davon lassen.
Wie gesagt, mit einer richtigen Datenbank wie z.b. MySQL (darauf bezog sich auch mein Gedankengang) ist die Geschichte schon nicht "mal eben so" umzusetzen, da ist einiges zu berücksichtgen..... und Deine ASCII-Dateien setzen dem nur noch die Krone auf. ;)

Ein Datenbankserver müsste ja nicht zwangsläufig unter Linux laufen..... MySQL, Apache und PHP (und ggf. Perl) gibt es ja auch für Windows..... selbst Cronjobs sollen mit z.b. CRONw unter Windows möglich sein (habe ich aber nie getestet).

Ich würde versuchen den Chef zu überzeugen "neue Wege" zu gehen..... schliesslich könntest Du die Zeit auch sinvoller nutzen und lieber an ein paar Mopeds rumschrauben..... würde sogar der Kasse gut tun. ;)
 
Zurück