Wer hat recht? Was braucht mehr leistung? Was ist besser?

PostmanX

Mitglied
Wer hat recht? Was braucht mehr leistung? Was ist besser?

Bitte lesen dann Meinung abgeben!

Also ein freund arbeitet an einer kleinen Ajax Shoutbox.
So, da wir natürlich so wennig leistung wie möglich verbrauchen wollen suchen wir nach ideen der verbesserung.
So gestern abend hatte ich die Idee. Wir erstellen eine xml datei mit den shouts.
Momentan werden alle 12 sekunden die nachrichten abgefragt. Also per JS eine datei geöffnet, die ladet die letzten beträge oder die neuen beiträge und übergibt sie. JS fügt sie dann das div ein.
So meine idee wäre, immer dann wenn jemand was shoutet wird alles in die sql eingetragen und zum schluss werden wieder die letzen x beiträge geladen und dann in eine xml eingetragen. Die wird dann von js ausgelesen und in das div eingefügt, falls ein neuer beitrag in der xml einfach in das div einfügen.
Jetzt streiten wir uns was besser ist! Das alte oder das neue. Fall ihr das nicht vertseht hab ich den chat verlauf noch hinzugefügt.



Falls ihr für mich Postman seit, dann schreibt 1 und den Grund!
Falls ihr für Custofreak seit, dann schreibt 2 und den Grund!

cust0fr3ak, 12.07.2008 17:41:18:
» sorry, ich war weg. kp was man da machen kann vllt inne txt die id
» der neuesten nachricht reinschreiben oder alles über ne txt machen

cust0fr3ak, 17:41:26:
» ah ich hab den fehler mit dem limit

cust0fr3ak, 17:41:40:
» afk

Postman, 18:01:33:
» Re?

Postman, 18:01:55:
» Ich würde die ganezn nachrichten in eine xml schreiben

Postman, 18:02:15:
» Die xml wird dann geschrieben wenn eine neue nachricht geschrieben
» wird

Postman, 18:02:46:
» Dann wird von php eine datei mit den letzten x nachrichten
» geschrieben

Postman, 18:03:08:
» Dann schreibst du in der sql das theme, so das php das theme nicht
» mehr rendern muss

cust0fr3ak, 18:19:29:
» wie meinst du das mit dem theme

Postman, 18:19:47:
» Also das theme für die einträge

cust0fr3ak, 18:19:55:
» wie mach ich ne xml hab sowas noch nie gemacht

Postman, 18:19:57:
» Das machst du per js

Postman, 18:21:36:
» Als in der xml, müssten ID,NICK,MESSAGE, und DATUM sein, die soll
» js auslesen, dann soll js das in das theme einfügen

cust0fr3ak, 18:22:03:
» das mit dem theme zieht doch kaum leistung

cust0fr3ak, 18:22:13:
» js ist e und zu lahm

cust0fr3ak, 18:22:27:
» brauchen txt/xml weniger als sql?

Postman, 18:23:06:
» Klar, da du nicht immer eine verbindung aufbauen musst, außerdem
» geht das laden der inhalt schneller

Postman, 18:24:23:
» Und das theme sollte in js sein, da du dann nur 3 zeillen mehr
» einfügen musst

cust0fr3ak, 18:25:25:
» sql braucht weniger leistung als xml

cust0fr3ak, 18:25:31:
» das steht fest

Postman, 18:26:10:
» Ja, aber es braucht mehr leistung alle 12 sekunden die gleiche
» anfrage zu zu machen, als eine statische xml datei zu öffnen

cust0fr3ak, 18:26:41:
» ne ich muss die xml auch alle 12 sekunden öffnen

Postman, 18:27:00:
» Ja, aber die ist ja statisch ist also gleich wie eine html datei
» öffnen

cust0fr3ak, 18:27:08:
» ja und?

cust0fr3ak, 18:27:13:
» wo ist der unterschied

cust0fr3ak, 18:27:21:
» zieht trotzdem mehr leistung

Postman, 18:27:45:
» Nein, bei xml muss der das nur öffnen und sql muss er sql starten
» und den inhalt rendern und dann ausgeben

Postman, 18:28:57:
» Es muss php gestartet werden und dann sql und dann muss das php das
» auch noch ausgeben, das ist doch unnötig

Postman, 18:29:16:
» Du kannst doch die datei die den inhalt sendet, eine xml datei
» erstellen lassen und die abspeichern

Postman, 18:29:26:
» Und die wird dann alle 12 sec geöffnet

cust0fr3ak, 18:31:25:
» die xml müsste aber noch verändert werden da er ja nur die neusten
» läd und wenn das wirklich so wäre warum nutzen dann so viele sql

cust0fr3ak, 18:31:39:
» sagt ein profi, dem ich unser gespräch geschckt hab

Postman, 18:32:14:
» Du versteht es noch nicht

Postman, 18:32:33:
» also

Postman, 18:32:40:
» Sollte ein user was shouten

Postman, 18:32:50:
» Dann öffnet er ja sentdata.php

Postman, 18:33:06:
» So alles wird in den sql eingetragen

Postman, 18:33:42:
» So, dann werden die letzten X beträge aus der sql geladen und in
» eine xml datei gespeichert

Postman, 18:33:48:
» Zb shout.xml

Postman, 18:33:59:
» Die wird dann alle 12 sec geöffnet

Postman, 18:34:24:
» So, sollte jemand wieder was shouten passiert das gleiche

Postman, 18:35:44:
» So wenn JS die daten aus der sql ließt hat er ja nur den text,
» darum sol js das theme rendern

Postman, 18:35:49:
» Also nur für die nachrichten

Postman, 18:35:58:
» So was ist schneller?

Postman, 18:36:19:
» Eine datei öffnen wo nur text drin ist geht schneller als wenn der
» server erst arbeiten muss und da viel mehr text drin ist

Postman, 18:36:58:
» Verstanden?

Postman, 18:37:18:
» Generel ist sql viel schneller, doch es zeiht mehr leistung

cust0fr3ak, 18:37:35:
» aber du musst dann immer die ganze xml laden bei sql lädst du nur
» einen eintrag

cust0fr3ak, 18:37:50:
» sql ist schneller und zieht weniger leistung

Postman, 18:38:48:
» Die xml enthält ja auch nur die letzen x einträge

Postman, 18:38:56:
» Die du eingestellt hast

Postman, 18:39:14:
» So js öffnet die js und ladet nur die inhalte heraus, die er braucht

Postman, 18:39:17:
» Wie RSS

cust0fr3ak, 18:39:24:
» was ist denn das für ein schwachsinn - dann braucht man auch kein
» ajax, dann kannste direkt meta refresh machenund jedesmall wird die
» komplette xml datei geladen / aufgerufen , dann lieber 1x sql - meist
» gibts ja gar kein result

cust0fr3ak, 18:39:33:
» und was passiert wenn er grad aus sql in die xml schreibt und in
» dem moment jemand läd - dann fehlt die hälfte

Postman, 18:40:08:
» Das ist ja aber egal, wenn js nur den letzetn inhalt aus der js nimmt

Postman, 18:40:18:
» Weil in der xml die id steht

cust0fr3ak, 18:40:54:
» laden musst du trotzdem die ganze datei du kannst keine teile
» öffnen du kannst nur den cursor an beliebige positionen setzen

cust0fr3ak, 18:41:09:
» vorallem wenn oft was gepostet wird muss er permanent die xml
» schreiben udn das zieht ressorucen

cust0fr3ak, 18:41:28:
» die worte eines profis

cust0fr3ak, 18:41:58:
» er sagt dass man die wahrheit nur ducrch ausprobieren herausfinden
» kann

Postman, 18:42:57:
» Aber es ja nur alle 12 secunden neu gealden, das heißt das es nicht
» zu einem schnellen chat kommen wird sondern nur zu hin und wieder
» shouts

Postman, 18:43:16:
» Darum ist eine xml besser

cust0fr3ak, 18:43:28:
» es geht ums schreiben das zieht verdammt viel

cust0fr3ak, 18:43:40:
» aber das kannst du so nicht sagen, dass musst du ausprobieren

Postman, 18:44:49:
» Ich glaube das das schreiben was alle paar minuten im durchschnitt
» passiert wohl unwichtiger ist als alle 12 sekunden ein refreas

Postman, 18:45:00:
» ch

cust0fr3ak, 18:45:06:
» moment

cust0fr3ak, 18:45:09:
» du GLAUBST

cust0fr3ak, 18:45:10:
» ^^

cust0fr3ak, 18:45:15:
» du weißt es nicht

cust0fr3ak, 18:45:26:
» wißt du was wir machen nen test

Postman, 18:45:35:
» Und wie?

Postman, 18:45:57:
» Erstmal müssen wir das coden ^^

cust0fr3ak, 18:46:08:
» wir programmieren die shoutbox komplett um in xml, und schauen dann
» was wieviel bei wievielen lese/schreibzugriffen zieht
 
Zuletzt bearbeitet:
Also, du (POSTMAN) willst anstatt einer DB alles in ein XML schreiben.
Das spart ständige DB-Abfragen, wenn es nichts neues gibt.

Der User holt dann per AJAX das XML-File....und die neuesten Sachen daraus werden dazugeladen...korrekt verstanden? :-)

Falls ja...das ersparen der Queries ist ja gut und schön, aber dieses XML-File wird in kürzester Zeit mehrere MB gross sein...und das alles 12 sec Laden...uiuiui :suspekt:

Anderer Vorschlag...der die DB schont, ohne ein riesiges XML-File zu Laden:

Jedesmal, wenn wer was shoutet, schreibe irgendwas änderliches(z.B. Timestamp) in irgendeine Datei(und natürlich die Nachricht in eine DB).

Wenn jetzt per AJAX die Neuigkeiten abgerufen werden, schaue per filemtime() nach, ob besagte Datei in den letzten 12sec geändert wurde...wenn ja, hol die News aus der DB, wenn nicht, mache nichts.

Statt des Timestamps könntest du bspw. auch die ID des DB-Eintrages in der Datei speichern...beim AJAX-Request schickst du dann die ID der zuletzt gesenden Nachricht mit, ...daran kann man dann auch sehen, ob etwas Neues in der DB steht, ohne sie gleich abfragen zu Müssen...ausserdem weisst du dann, was der betreffende schon da hat, und was nicht.
 
Also, du (POSTMAN) willst anstatt einer DB alles in ein XML schreiben.
Das spart ständige DB-Abfragen, wenn es nichts neues gibt.

Der User holt dann per AJAX das XML-File....und die neuesten Sachen daraus werden dazugeladen...korrekt verstanden? :-)
Im grunde ja, nur das die SQL bleibt
Falls ja...das ersparen der Queries ist ja gut und schön, aber dieses XML-File wird in kürzester Zeit mehrere MB gross sein...und das alles 12 sec Laden...uiuiui :suspekt:
In der XML datei sollen nur die letzten z-b 5 einträge sein
Anderer Vorschlag...der die DB schont, ohne ein riesiges XML-File zu Laden:

Jedesmal, wenn wer was shoutet, schreibe irgendwas änderliches(z.B. Timestamp) in irgendeine Datei(und natürlich die Nachricht in eine DB).

Wenn jetzt per AJAX die Neuigkeiten abgerufen werden, schaue per filemtime() nach, ob besagte Datei in den letzten 12sec geändert wurde...wenn ja, hol die News aus der DB, wenn nicht, mache nichts.

Statt des Timestamps könntest du bspw. auch die ID des DB-Eintrages in der Datei speichern...beim AJAX-Request schickst du dann die ID der zuletzt gesenden Nachricht mit, ...daran kann man dann auch sehen, ob etwas Neues in der DB steht, ohne sie gleich abfragen zu Müssen...ausserdem weisst du dann, was der betreffende schon da hat, und was nicht.

Momentan ist es so mit den Datei laden, es wird per GET die letze ID übermittelt, am anfang ist die ie ja leer und darum ladet die SQL die letzten x beträge, die man in der config einstellt. Beim 2. mal übermittelt JS per GET die letzte id, zb 11. Falls jetzt ein neuer eintrag in der DB gefunden wird, gibt PHP den aus, und JS ladet den in die Shout-Box.

Nun dachte ich mir am Abend, als ich die idee hatte, wie kann man es verhindern, das alle 12 sekunden eine unnötige DB abfrage gemacht wird.
Ich dachte, das es doch viel einfacher sei, eine Statische datei zu öffnen, anstatt alle 12 sekunden PHP zu öffnen und dann noch zur DB connecten, und dann falls was ist alles mit dem Theme von dem eintrag JS zu übergeben.

Wenn ich das von dir richtig verstand habe, soll ich jetzt eine xml datei erstellen mit der zeit, des letzen posts, bzw die id, und falls eine neue zeit da ist soll js die alte datei öffnen, die die infos aus der DB ladet?

Vielen dank noch für deine hilfe. Es ist eigentlich nicht wichtig, doch mir ärgerts es nunmal, dass meine idee vllt nicht so ist wie ich dachte. Außerdem haben wir gewettet, wer recht hat ^^
 
Eine einfache Textdatei reicht völlig aus. Der Inhalt ist dabei völlig egal.

Das Problem an der XML Datei ist, dass sie, wie Sven Mintel ja sagte, zu groß wird. Das heißt du kannst nicht wie bei SQL nur die letzten X Beiträge auslesen, die Datei wird immer als Ganzes eingelesen und dann kannst du erst sagen, welche du möchtest.
Und das wird letztenendes diese Version unmöglich machen.

Und du verhinderst das unnötige Query ja, falls sich in der letzten Zeit nichts getan hat und somit die Datei nicht geändert hat.

[phpf]filemtime[/phpf]
 
Eine einfache Textdatei reicht völlig aus. Der Inhalt ist dabei völlig egal.

Das Problem an der XML Datei ist, dass sie, wie Sven Mintel ja sagte, zu groß wird. Das heißt du kannst nicht wie bei SQL nur die letzten X Beiträge auslesen, die Datei wird immer als Ganzes eingelesen und dann kannst du erst sagen, welche du möchtest.
Und das wird letztenendes diese Version unmöglich machen.

Und du verhinderst das unnötige Query ja, falls sich in der letzten Zeit nichts getan hat und somit die Datei nicht geändert hat.

[phpf]filemtime[/phpf]
Ich möchte bei jedem shout die datei neu überschrieben mit nur den letzten X beträgen. Nehmen wir mal an in der config steht 5, dann soll in der datei nur die letzten 5 beträge stehen mehr nicht

könnte ich nicht eine xml datei mit der letzen id erstellen, so müsste php nicht alle 12 sekunden schauen ob sich etwas getan hat sondern nur, js die datei öffnen und die id vergleichen mit der letzen die Js hatte, und falls die eine andere ist, die php datei zu laden der inhalte öffnen? die XML würde immer dann erstellt, wenn jemand was shoutet, also im grund immer neu, und nicht etwas hinzufügen
 
Wenn sowieso nur die letzten x Einträge relevant sind, rate ich dir ebenfalls zur dateibasierten Lösung. Dabei solltest du aber auch Mechanismen wie Caching und möglicherweise auch eine Delta-Kodierung in Betracht ziehen, um redundante Datenübertragungen zu vermeiden.
 
Wenn sowieso nur die letzten x Einträge relevant sind, rate ich dir ebenfalls zur dateibasierten Lösung. Dabei solltest du aber auch Mechanismen wie Caching und möglicherweise auch eine Delta-Kodierung in Betracht ziehen, um redundante Datenübertragungen zu vermeiden.

Also ich und mein freund haben uns jetzt geeinigt, das wir beide recht haben, und wir machen das jetzt so, das eine datei auf dem space geladen wird, in der nur die letzte id ist, falls JS eine andere id hat soll er die late getdata.php öffnen und wie es vorher war die daten aus der db laden. Ich glaube das ist einer der besten lösungen. Falls jemand noch ne bessere idee hat, könnte er sie gerne vorstellen. Möglich wäre es ja.
 
Ein Kompromiss nur damit beide Recht behalten? Die dateibasierte Lösung ist definitiv effizienter, wenn auch etwas komplizierter bei der Implementierung. Dafür sind aber die Lesezugriffe flotter.
 

Neue Beiträge

Zurück