Threads auslesen, verarbeiten und neu darstellen

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Shauku
Beiträge: 8
Registriert: Do 18.Jan, 2007 21:57

Threads auslesen, verarbeiten und neu darstellen

Beitrag von Shauku »

Mein Ziel: Ich möchte Inhalte von Threads die in einem speziellen Subforum (eine ID) stehen auslesen, alles was nicht in einem speziellen BBCode steht wegwerfen und alles was übrig ist aufgelistet in eine Tabelle mit dem Namen des Verfasser und Datum der letzten Modifikation schreiben. Also:

Inhalt 1. BBCode - Verfasser - Datum
Inhalt 2. BBCode - Verfasser - Datum
Inhalt 3. BBCode - Verfasser - Datum
...

Umsetzungen: Ich hab keine Idee, wie ich das angehen soll, da ich vermeiden will, dass bei jedem Seitenaufruf alle BBCodes immer wieder neu ausgelesen werden (Pro User sind das ca. 100 - 200 solcher BBCodes, was bei nur 10-20 Usern schon... naja, da kommt ein bisschen was zusammen, ich kann nicht abschätzen, ob das nicht irgendwann etwas zu viel wird) . Da die User in besagtem Forum ihre Threads auch "mal" (=Regelmässig) verändern, bin ich von der "schreiben wir alles in ne Datenbank" Idee auch wieder ein wenig abgekommen und schwimm jetzt ein bisschen Ziellos umher. Vielleicht ein Cronjob? Vielleicht ganz die Finger von weglassen? Meine MySQL Kenntnisse haben noch nicht viel Praxis gesehen.

Hoffe, dass war verständlich ^2 . Hat jemand ein paar Tips oder gute Codeschnipsel für mich?
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Wenn man wüsste von welcher Ausgangsposition du da redest, könnte man evtl. auch nen Tipp geben.

Du hast ein Forum in dem jeder User einen eigenen Thread hat?
Aus diesem Forum möchtest du eine art Newsliste erstellen, in der aus jedem thread die letzte Änderung angezeigt wird?
Soweit kann ich das evtl. noch nachvollziehen. Aber was soll das Filtern der BBCodes? Und warum 100 bis 200 pro User???
Was hat es mit diesen BBCodes auf sich? Und meinst du wirklich BBCodes?
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, so ganz folgen kann ich hier auch nicht wirklich.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Shauku
Beiträge: 8
Registriert: Do 18.Jan, 2007 21:57

Beitrag von Shauku »

Ok, also mal Praxisbezogen. Ich hab einen BBCode der heisst

Code: Alles auswählen

[card][/card]
. In diesen Code werden Kartennamen reingesetzt (Karten eines Sammelkartenspiel). Jetzt haben User von mir in einem Subforum Threads, wo sie Tauschkartenlisten pflegen. Die möchte ich auslesen (mit Namen des Poster und Datum) und ausserhalb des Forums gesondert Darstellen (in einer Tabelle) .

Ich hab den Usern bis jetzt ein Formular zur Verfügung gestellt, über dass sie die Karten eingeben können, aber das dauert den meisten zu lange, wird falsch bedient und auch nicht vernünftig angenommen. Die meisten posten ihre Listen lieber im Forum.
Zuletzt geändert von Shauku am Fr 24.Aug, 2007 21:04, insgesamt 1-mal geändert.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

A-ha - Und in den Beiträgen sind nicht nur die Karten enthalten, sondern auch noch anderer Text den du nicht übernehmen möchtest?!

Spontan würde mir dazu nur eine eigenständige bbcode.php einfallen, die den CARD-Tag parst und den Rest verwirft.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Shauku
Beiträge: 8
Registriert: Do 18.Jan, 2007 21:57

Beitrag von Shauku »

Ja, da ist noch anderer Text drinnen. Und auch mehr als eine Karte, deswegen würde sich der [card] BBCode anbieten, da den die meisten sowieso schon verwenden (der linkt auf eine externe Kartendatenbank-Seite, aber das tut hier ja nichts zur Sache).

Ich hab an das Auslesen der Posts gedacht ( Text in ne Variable ), verarbeiten der Posts: bis [card] suchen, Inhalt bis [/card] in einem Array speichern und den Text weiter durchgehen, bis zum nächsten [card] .
Aber was mach ich dann mit dem Array? Ausgeben und jedesmal neu auslesen? Ich will ja gewährleisten, dass wenn wer seinen Threat editiert, dass auch in die Tabelle aufgenommen wird.

Erklär deine spontane Idee mal plz etwas näher :) . Oder gibts vielleicht nen Mod, der Quotes ausliest und zitiert oder irgendwelche Schnipsel, die sich hier verwenden lassen könnten?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öhm, ist nun klar, was Du willst, aber Dir dürfte dann auch klar sein, oder zumindest nach meinem jetzigen Post, daß eine solche Anzeige schon zu Seiten-Timeouts führen kann!
"Wenige" BBCodes aus einem Post auszulesen ist schon schwer und aufwendig genug (ich hatte vor kurzem erst den Link Spider entwickelt), 100-200 BBCodes aus ettlichen Posts rauszuholen ist da schon extrem aufwendiger, zumindest in der Verarbeitungsroutine.
Ich würde da wirklich eher vorschlagen, daß man eine Kartenverwaltung aufzieht, in der die User ihre Karten eintragen.
In einem Post ist das zwar auch nett, aber diese dann in anderen Listen zu verwalten, wo es eben um sehr viele Karten geht, ist nunmal extrem schwierig.

Bei den Mengen an Daten könnte das über kurz oder lang sogar den Server in arge Bedrängnis bringen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Bei den Mengen an Daten könnte das über kurz oder lang sogar den Server in arge Bedrängnis bringen...
Das kommt jetzt ganz drauf an was er da genau möchte und wie man das Umsetzt.

Wenn ich das richtig Verstehe, dann möchte er nur eine Darstellung der Posts ohne den Inhalt der nicht in einem CARD-Tag steht.
Wenn man das richtig Umsetzt, dann kostet das den Server sogar noch weniger Arbeit als die Original Darstellung des gleichen Beitrages. :)

Mein Gedanke diesbezüglich ist, wie in #5 bereits angedeutet, eine gesonderte bbcode.php
Das "News"-Skript liest die Beiträge aus der Datenbank (genau wie die viewtopic.php) und Jagd diese dann nicht durch die bbcode.php sondern durch die zweite bbcode.php die wiederum nichts anderes kann, als den CARD-Tag zu parsen. (Nein ICH Programmiere das nicht!)


Die Original bbcode.php geht ja hin und sucht in der Textvariable nach [card:bbcode_uid]blablabla[/card:bbcode_uid].
Jede Fundstelle ersetzt sie dann durch den entsprechenden Eintrag in der bbcode_body.tpl.
Wenn man jetzt hingeht und die Fundstelle nicht ersetzt sondern das Ergebnis in einer neuen Variable speichert, hat man am ende ein Variable in der nur der gewünsche Inhalt zu finden ist. :)
Das ist etwas Rechenintensiver als das einfache Ersetzen. Aber dadurch das die card_bbcode.php nichts anderes macht als nach dem CARD-Tag zu suchen und die normale bbcode.php gar nicht ins Spiel kommt, sollte das nicht wirklich ein Problem darstellen.
Zuletzt geändert von AmigaLink am So 26.Aug, 2007 12:28, insgesamt 1-mal geändert.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Genau das meinte ich ja und da liegt eben das Problem:
Wenn ettliche User 100-200 und mehr Karten posten, dann braucht preg_match schon sehr lange, das Ergebnis zu liefern.
Ich habe mit dem Link Spider bei 1-2 Links in einigen Posts schon Performanceverluste zu bemerken, daher will ich an 100-200 BBCodes je Post gar nicht erst denken :(
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Moment, die Beiträge existieren doch bereits und werden Problemlos von der viewtopic.php Dargestellt (so Verstehe ich das zumindest). Die Menge der BBCodes sollte somit kein Problem darstellen, denn die bbcode.php muss wehsentlich mehr Leisten als die card_bbcode.php. ;)
Um den Server nicht unnötig zu belasten, kann man noch mit einem Cache (wie mein CPS) Arbeiten, der einmal am Tag erneuert wird um einigermaßen Aktuelle Daten zu gewährleisten.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dann kannst Du Dich ja da mal dran versuchen ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Nee danke. Mein Kopf ist derzeitig noch mit ganz anderen Umsetzungen belastet.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Shauku
Beiträge: 8
Registriert: Do 18.Jan, 2007 21:57

Beitrag von Shauku »

Hum. Danke für die Tips, hat schonmal etwas geholfen. Ich werd das wohl bei Gelegenheit noch mit nem Freund näher bequatschen.
Den Inhalt der Topics find ich ja in der DB unter phpbb_topics . Weiss einer von euch ungefähr, wo die Poständerungen ("1,2,3 mal editiert am") hinterlegt sind? ^2
Zuletzt geändert von Shauku am Mo 27.Aug, 2007 00:15, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das ist im Post selber, also in der Tabelle phpbb_posts zu finden.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Shauku
Beiträge: 8
Registriert: Do 18.Jan, 2007 21:57

Beitrag von Shauku »

[quote="oxpus";p="76348"]Das ist im Post selber, also in der Tabelle phpbb_posts zu finden.[/quote]
Also keine extra Tabelle, wo er die Zahl der Editierungen hinterlegt? Ok, thx.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nein.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten