Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von Sanchez17 »

Hey an alle :-)

ich bin ein wenig am experimentieren und hab da ein paar Fragen bzw. suche Lösungsansätze - 2 Lösungen habe ich auch. Vielleicht kann man mir ja helfen.

Ausgangsituation:


Gehen wir mal davon aus wie haben 2 Webseiten, einmal
>>>>>> www.nutzer.de
>>>>>> www.nutzer-2.de

>>>>>> www.leister.de

www.leister.de bietet eine Dienstleistung an Webseiten an. Beispielsweise ein Lexikon, welches auf Webseiten eingebunden werden kann.
www.leister.de stellt dabei aber nur die Datenbank zur verfügung - besitzt also keine eigene Homepage.

Nun kann www.nutzer.de sowie www.nutzer-2.de das Lexikon bei sich einbinden. Die Daten sollen von www.leister.de entnommen werden - sprich die Datenbank Einträge im Lexikon.
Zusätzlich soll man von www.nutzer.de sowie www.nutzer-2.de Daten in die Datenbank von www.leister.de einfügen können.

Was wäre der beste Ansatz um die Kommunikation der Server herzustellen?

also quasi

Code: Alles auswählen


www.nutzer.de < Daten > ## www.leister.de ## < Daten > www.nutzer-2.de
Hab schon viel gegoogelt aber nichts brauchbares gefunden.

Meine 2 Ansätze:

I. Eine file() Verbindung
Damit www.nutzer.de Daten bekommt, werden die Daten per file aufgerufen:
Also ein Script ruft folgendes auf: file("www.leister.de/daten_holen.php");
daten_holen.php lädt die Daten aus der Datenbank und gibt diese im CSV Format (also: Text1|Text2| usw) aus..dies kann www.nutzer.de einesen und formatieren bzw damit arbeiten.
Sollen Daten von www.nutzer.de nach www.leister.de übergeben werden, wird die dies wie folgt erledigt:
file("www.leister.de/daten_update.php?text1=bla&text2=bla");

Wie wäre diese Lösung? Wie Trafficlastig würde diese sein? Und gebe es dabei große risiken (man kann ja auch Passwörter beim Aufruf versehen, die nur die beiden Websieten wüssten, ala file("www.leister.de/daten_holen.php?key=passwort");


II. Mit mail()
Quasi das Daten gesammelt werden und dann zum Beispiel einmal pro Tag diese mit mail() an ein Posteingang gemailt wird. Ein PHP Script kontrolliert den POP3 Eingang und verarbeitet die Daten in der Mail.
Das wäre sicherlich einfacher, aber so müsste www.nutzer.de Tabellen in deren Datenbank für das "zwischenspeichern" besitzen. Eine Lösung ohne zwischenspeichern bei www.nutzer.de würde ich - sofern möglich - bevorzugen,.

Wie effizient wäre diese Methode?


Über Kritik, Verbesserungsvorschläge oder ganz neue Ideen würde ich mich freuen :-)
Bitte bedenkt, das nur PHP genutzt werden kann.

lg miguel
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von gn#36 »

Was ist denn mit XML Datenaustausch? Das wäre ja auch ein recht flexibles Format, das habe ich testweise auch für Client/Serveranwendungen verwendet. Alternativ richtest du dir die SQL Datenbank so ein, dass man von extern darauf zugreifen kann, dann brauchst du auf der Serverseite gar nichts programmieren und die Clientseite greift eben auf die externe DB zu statt auf eine interne. Je nach dem wie viel Aufwand du da reinstecken willst gibt es da sicher auch Lösungen, die so eine Datenbank auf mehrere Server spiegeln. Oder du setzt direkt auf ein verteiltes Datenbanksystem (Stichwort NoSQL).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von Sanchez17 »

Erstmal danke für die Antwort :-)

Zu XML:
Das wäre ja ein ähnliches Prinzip wie meine file() Idee. Daten formatiert Ausgeben bzw einlesen.
Gibt es den wenn ich beispielsweise SimpleXML verwende Vorteile gegenüber meine file() Version?

Weil vom Prinzip her sehe ich kein Unterschied - außer das ein XML viel mehr Zeichen enthält (die ganzen Tags) als ein CSV mit Pipes als Trenner und somit größer (mehr Traffic) wäre.
Hab mich zugegeben auch noch kaum mit PHP - XML beschäftigt. Fand aber jetzt so keine großen Vorteile.

Bezüglich externe Datenbank:
Darüber habe ich auch schon überlegt - allerdings hätte so ein http://www.nutzer.de nicht nur Zugang zu den Daten sondern auch volle Kontrolle.
Wenn http://www.nutzer.de beispielsweise mal gehackt wird und die sich die Zugangsdaten nehmen könnte das auch folgen auf http://www.leister.de haben bzw die Datenbank.

Mit dem file() bzw mail() Prinzip werden keine direkte Zugangsdaten zur Datenbank abgegeben. Das wäre mir schon lieber.


Sollte ich mla unsinn erzählen => direkt meckern :D
Steig jetzt erst wieder nach nem Jahr ins Thema PHP/ MySQL und eben ganz neu mit der Kommunikations von Server ein :-)
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von P7BB »

Sanchez17 hat geschrieben:Wenn http://www.nutzer.de beispielsweise mal gehackt wird und die sich die Zugangsdaten nehmen könnte das auch folgen auf http://www.leister.de haben bzw die Datenbank.
Oder wenn nutzer.de sofort "böse" ist und deine datenbank löscht, verändert,... ;)

Also du benötigst auf jeden Fall eine Api, die es anderen Homepages ermöglicht, Daten auszutauschen. Dafür eignet sich, wie gn#36 sagte, XML recht gut. Du könntest aber genausogut auch ein Format á la
result:1
eintrag1:bla
eintrag2:blabla
benutzen, aber du musst in beiden Fällen auf jeden Fall sicherstellen, dass Nutzereingaben das Ergebnis nicht verfälschen, also wenn in der Datenbank für "result" das hier steht:
0
eintrag1:verfälscht
eintrag2:verfälscht
result:1
dann würde dort stehen:
result:0
eintrag1:verfälscht
eintrag2:verfälscht
result:1
eintrag1:bla
eintrag2:blabla
Somit hätte man einen neuen Eintrag hinzugefügt, der da nicht reinkommt. Ich persönlich habe sowas schonmal nach dem Schema gemacht und zwar so, dass ich alle "Ergebnisse" in Hexadezimal schreibe, also sowas wie
bla:0F15ACD
Gleichzeitig habe ich bei meiner Api auch direkt noch die Möglichkeit eingebaut, dass ich mehrere Daten über ein "bla:" übergebe, indem ich es einfach mit einem trennzeichen abgetrennt habe... Etwa so:
bla:0F15ACD/2F3C4E/FFBB11AC3E
Ob das ganze jetzt unbedingt so vorteilhaft für eine Schnittstelle zwischen 2 Homepages ist, weiß ich nicht, aber zumindest dürfte man damit weniger Traffic verursachen, als bei einer XML-Datei ;)

Aso, als Möglichkeit zur Übertragung würde ich weder file() noch irgendwelche Methoden mit mail() nehmen, sondern ganz einfach einen HTTP-Request schicken, der an die Diestleistungsseite nebenbei auch das Suchwort oder sowas mitsendet und dann das entsprechende Ergebnis weiterverarbeitet.
Siehe auch: fsockopen(), fputs(), fgets(), fclose()
Dafür solltest du am besten aber auch eine fertige Client-Klasse zum Download anbieten, denn sowas sollte direkt mit der Host-Klasse abgestimmt sein ;)

MfG
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von Sanchez17 »

Hey

danke für deine Antwort.

Soweit alles verstanden. Doch eine Frage noch dazu: Worin besteht der Vorteil wenn ich mit fputs eine HTTP-Request Sende anstatt file() zu benutzen?
Habe mich so mit fputs etc. nicht beschäftigt und kenn mich damit nicht so aus - bin aber gerade dabei fleißig das zu testen :D
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von P7BB »

Naja, ich vermute, dass fputs() und so auf dasselbe hinauslaufen, wie file(), aber du hast beispielsweise schonmal den Vorteil, dass du ohne großen Aufwand zeilenweise das Ergebnis einlesen kannst ;) So kannst du das ggf. besser verarbeiten...
Und du kannst noch einen Referrer einstellen,... ;) Zudem schickst du die Daten dann per POST, statt per GET. Ob dir das jetzt so großartige Vorteile bietet, weiß ich nicht, aber damit hab ich es jedenfalls gemacht :)
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von Sanchez17 »

ok danke :-)

werde mich dann mal mit allen beschäftigen und eine wahl treffen :-)
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von gn#36 »

fgets etc haben gegenüber file überhaupt keinen Vorteil. wenn du eh alle daten brauchst solltest du sie lieber per file komplett mit der C Funktion holen als langsam zeilenweise per PHP. Das würde ich nur machen wenn du probleme mit dem Speicherbedarf des skriptes hast.

Was die sicherheit des Sql Servers angeht muss ich auch wiedersprechen: Du kannst auch user einrichten, die nur lesezugriff erhalten und das sogar auf bestimmte Tabellen, sogar auf einzelne Spalten beschränkt. Du könntest so z.b. den Zugriff auf "öffentliche" Daten beschränken und sensible Daten und Änderungen auf anderem weg machen. das könnte sich bei hauptsächlich lesenden verbindungen auszahlen.

Was die Transporte der Daten angeht hat xml natürlich erst mal keine Vorteile gegenüber csv, allerdings lässt sich XML strukturiert einlesen, du kannst also z.B. objektzugehörigkeiten in der Struktur darstellen und musst nicht mühsam die Tabelle filtern. Kommt natürlich auf deine Daten an, ob das ein Vorteil ist oder nicht. Wenn du eh nur Tabellendaten einzeln überträgst kannst du natürlich auch einfach bei csv bleiben. Mail würde ich nicht machen Das fügt letztlich nur einen weiteren Server in die Kette, das geht auch direkt.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
djchrisnet
Mitglied
Beiträge: 1275
Registriert: 29.06.2007 15:52
Wohnort: Elmshorn
Kontaktdaten:

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von djchrisnet »

ich kann das json format sehr empfehlen. siehe dazu json_encode & json_decode
ausserdem ziehe ich file_get_contents vor, da sie eine datei als string zurückgibt und damit sehr viel einfacher zu händeln ist.

wieso xml hier immer favorisiert wird, kann ich nicht nachvollziehen...

Falls Interresse besteht, gebe ich gerne einblick in einen teil meiner api´s.
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Re: Kommunikation zwischen 2 (oder mehr) Server/ Webseiten

Beitrag von Sanchez17 »

Danke für die Infos :-)

Jetzt sind wieder ein paar neue Begriffe gefallen...ich werde mich mal die Tage in ruhe alles nachlesen und ausprobieren :-)

Ein dirketer Zugang zu Datenbank hört sich mit Lesezugriff auch recht interessant an - aber dafür wird man denke ich, root berechtigungen benötigen, oder?
Google spuckt jetzt auf die schnelle nichts brauchbars auch - aber werde mich, wie gesagt, mal alles die Tage recherchieren :-)
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Antworten

Zurück zu „Coding & Technik“