php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-08-2010, 21:29
Jayjay
 Registrierter Benutzer
Links : Onlinestatus : Jayjay ist offline
Registriert seit: Jul 2008
Beiträge: 87
Jayjay ist zur Zeit noch ein unbeschriebenes Blatt
Standard news bei twitter usw.

hi,

mich würde interessieren wie ich so etwas am besten realisiere:
z.b. werden ja bei twitter die tweets meiner kontackte nach der aktualität angezeigt.
wie macht twitter das?
bekommt jeder der mich z.b. followed meine neuen tweets in seine newstabelle geschrieben?eher ja nicht, da dies ja ein deutliche vergrößerung des eig. notwedigen speicherplatztes wäre...
oder gibt es ein script das die news meiner freunde durchsucht und sortiert ausgibt?

gruß
Mit Zitat antworten
  #2 (permalink)  
Alt 06-08-2010, 21:54
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Jayjay Beitrag anzeigen
z.b. werden ja bei twitter die tweets meiner kontackte nach der aktualität angezeigt. wie macht twitter das?
Frag Twitter. Aber wahrscheinlich geht das per SQL über ORDER BY.
Zitat:
Zitat von Jayjay Beitrag anzeigen
bekommt jeder der mich z.b. followed meine neuen tweets in seine newstabelle geschrieben?
Nö, da wird in der Datenbank nur eine Relation zu dir hergestellt.
Zitat:
Zitat von Jayjay Beitrag anzeigen
oder gibt es ein script das die news meiner freunde durchsucht und sortiert ausgibt?
Willst du das selber machen oder suchst du ein Script, das das für dich erledigt. Denn dann verschiebe ich es in das richtige Forum.

Peter

PS: Vielleicht solltest du mal genau erklären, was du vorhast.
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 06-08-2010, 22:04
Jayjay
 Registrierter Benutzer
Links : Onlinestatus : Jayjay ist offline
Registriert seit: Jul 2008
Beiträge: 87
Jayjay ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi syr für das missverständniss,
ich will so etwas in der art programmieren, ich nenn es mal einen "datenstream".
also ich habe einen account und habe social-friends diese freunde abonnieren dann meine nachrichten und sollen diese auf ihrer seite angezeigt bekommen und zwar mit den nachrichten der anderen freunde halt in einer chronologischen Ordnung.

für ich ist es jetzt die frage wie man so etwas macht:
1. muss ich ein script programmieren das die z.b. 5 aktuellsten tweets meiner freunde einliest und dann vergleicht und dann die wegen mir insgesammt 5 aktuellsten anzeigt?

oder
2. wäre es z.b. besser eine mysql tabelle mit den nachrichten und einer spalte wo dann alle id's von den freunden stehen, die dies so zusagen lesen können,sodass ich eig. später nur noch die id von mir suchen muss und alles zeitlich richtig ausgeben?

gruß
Mit Zitat antworten
  #4 (permalink)  
Alt 06-08-2010, 22:11
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Jayjay Beitrag anzeigen
2. wäre es z.b. besser eine mysql tabelle mit den nachrichten und einer spalte wo dann alle id's von den freunden stehen, die dies so zusagen lesen können,sodass ich eig. später nur noch die id von mir suchen muss und alles zeitlich richtig ausgeben?
Das ist imho der richtige Weg. Ist nur eine Frage der Normalisierung. Ich lass das hier erst mal stehen, obwohl es wohl primär um eine Datenbankgeschichte geht. Mal abwarten, was die anderen dazu sagen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 07-08-2010, 14:23
Jayjay
 Registrierter Benutzer
Links : Onlinestatus : Jayjay ist offline
Registriert seit: Jul 2008
Beiträge: 87
Jayjay ist zur Zeit noch ein unbeschriebenes Blatt
Standard

obwohl das wäre ja auch schwachsinn wenn ich sagen wir mal 200 freunde hätte und allen deren id in das lesen feld geschrieben würde pro news von mir würden sich auch haufenweise daten ansammeln
gibt es vllt eine möglichkeit bei
PHP-Code:
SELECT FROM links WHERE id121 AND ... 
usw. das id = mit hilfe einer forschleife so oft zu wiederholen wie ich freunde habe?
also so in der art
PHP-Code:
for($a 1$a $anzahlfreunde$a++) 
dann die id jedes freundes auslesen und anhängen
PHP-Code:
id=73450 And id=783486 id=... 
usw.
und dies dann nur noch hinter das where bei der datenbankauslesung einbauen

ich hoffe dies ist einigermaßen verständlich,
wäre dies eine realisierbare gute möglichkeit?
Mit Zitat antworten
  #6 (permalink)  
Alt 07-08-2010, 15:02
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

nö .. das macht wenig Sinn, - wegen Normalisierung steht im ID Feld sowieso nur eine Zahl drin . Es macht auch keinen Sinn, dort mehrere Ids zu sammeln, darunter leidet die Übersicht ...

Da es sich offensichtlich um eine M:N Beziehung handelt (M Nachrichten von bzw an N Freunde) machst du am besten eine 3te Tabelle die nur Beziehungen enthält..

Also ID_Nachricht ID FReund als Spalten hat ..

dann hast du jeweils 1 Zeile pro "Beziehungspaar) .. und wenn du wissen willst, welche deiner Nachrichten von Wem gelesen wird, dann klapperst du einfach diese Beziehungstabelle nach deiner Nachrichten ID ab und holst dir über die gefundenen Freund IDs dann deren EInträge aus der User Tabelle (oder Freunde)...

wenn du dann obendrein der Beziehungstabelle ein Datumsfeld spendierst, kannst du dieses Nutzen um jeweils die neusten Leser herauszufinden
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (07-08-2010 um 15:07 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 08-08-2010, 21:55
Jayjay
 Registrierter Benutzer
Links : Onlinestatus : Jayjay ist offline
Registriert seit: Jul 2008
Beiträge: 87
Jayjay ist zur Zeit noch ein unbeschriebenes Blatt
Standard

aber wenn ich für jede beziehung pro nachricht einespalte machen verbaut das ganze doch auch extrem viel speicherplatz

ja syr ich meinte eig. WHERE id= 121 OR id= usw.

dann müsste ich nur alle ids meiner freunde in die syql abfrage einbauen und hätte keinen großen speicherverlust da die anchricht nur einmal geschrieben worden ist.
wäre das nicht besser?
oder lässt es sich nicht realisirten das ich den erstellten String mit allen ids einfach in die sql abfrage einbinde?
Mit Zitat antworten
  #8 (permalink)  
Alt 09-08-2010, 00:31
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

du machst nicht für jeden Leser eine spalte - dann ufert dein Tabellendesign aus .. sondern einfach eine kurze Eintragung in der erwähnten Beziehungstabelle

ID der Nachricht , ID des Lesers, Datum (bei der 3spaltigen Variante) ..

Wegen des Speichers - die Nachricht steht in der Tabelle für Nachrichten idealerweise 1 mal drin - also verbraucht sie auch nur 1 mal Speicher
und für die Beziehungstabelle .... die beiden Ids sind sowieso kurz (maximal 32 bit .. ) und das Datum wird auch als komprimierte Zahl gespeichert , dürfte 64 bit lang sein .. also 16 Byte Pro Zeile, dafür bleibt dein Tabellendesign in der 3ten Normalform - und die ist eigentlich das Mindeste, wenn Relationale Tabellen noch Sinn machen sollen

außerdem ...

Wenn du jedem Leser eine weitere Spalte spendieren willst - woher weißt du denn welches ID-Feld du überhaupt vergleichen musst?

Und alle Leser Ids in eine Spalte Schreiben .. welches Format soll die Denn haben - damit kannst du eigentlich deine Abfrage vergessen, du müsstest die Nachricht mit einer Abfrage einlesen und dann mit deiner Programmiersprache dieses Feld irgenwie auswerten, was aber alles andere als schnell ist ...idR ist die Datenbank schneller, dir die Datensätze anhand der von mir vorgeschlagenen 3ten Bezieungstabelle zu finden, weil dort die Informationen so schön eindeutig sind

Ich empfehle dir dringend wenigstens das GrundlagenKapitel zum Thema Datenbank-Design aus irgendeinem Buch, das sich mit SQL beschäftigt .. und wenn es eines ist, das PHP mit (My)SQL verheiraten soll ^^ - Dort erfährst du die Grundlagen von Tabellen bzw Datenbank Design und auch von den sogenannten Normalformen ...Ziel deiner Anstrengungen sollte immer mindestens die 3te Normalform sein - und besonders Augenmerk musst du auf die Beziehungen zwischen den Tabellen richten


um es Kurz zu machen es gibt derer 3 ...

1:1 - das ist die einfachste .. 1 Datensatz in der einen Tabelle hat genau 1 Partner in einer anderen Tabelle ...
(1 Kunde -> seine Adresse , 1 Kunde -> seine Bankinformation)
1:n - 1 Datensatz bezieht sich auf mehrere in einer anderen Tabelle
(1 shop -> mehrere Waren)

m:n - m Datensätze mit n Datensätzen in der anderen Tabelle
(so wie bei dir .. n Nachrichten an m Freunde)
während die ersten 2 aus Datenbanksicht trivial sind .. gilt es den 3ten Fall zu meiden wie der Teufel das Weihwasser, weil diese Beziehung keine eindeutigen Informationen liefert, wenn es nur diese 2 Tabellen gibt .. daher führt man eine Dritte Tabelle ein, die m:n durch 1:m und 1:n Beziehung ersetzt ..

soviel zur Theorie
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (09-08-2010 um 00:43 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 09-08-2010, 12:30
Jayjay
 Registrierter Benutzer
Links : Onlinestatus : Jayjay ist offline
Registriert seit: Jul 2008
Beiträge: 87
Jayjay ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok das verstehe ich , ich dachte nur das große dienste wie twitter evtl keine solleche tabelle haben sondern vllt ein script das alles durchforstet und so zu sagen meine nachrichten der freunde generiert, dann bräuchte ich nur die allgemeinde beziehung von der id meines freundes und der id von mir und dies würde für alle nachrichten usw. gehen.
aber ok deine lösung verscheint mir natürlich deutlich einfacher , aber wenn wir mal z.b. von einem promi ausgehen würde der täglich 5 tweets schreiben würde und 2 millionen follower hat würden das pro tag ca. 150 mb anfallen..
Mit Zitat antworten
  #10 (permalink)  
Alt 09-08-2010, 13:22
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

ich weiß ehrlich gesagt auch nicht, wie das Twitter, Facebook und ähnliche Konsorten tatsächlich machen - und die werden nen Teufel tun und es erzählen - aber deren Datenbank läuft mit Sicherheit auf (mindestens) einer Serverfarm, von deren Speicherplatz der normale Computernutzer selbst als Nerd träumt ...
Andererseits kann es durchaus sein, dass die das allein anhand der Zuordnung deiner Freunde machen, weil so, wie ich das verstanden habe ja sowieso JEDE deiner Nachrichten bei deinen Freunden gelistet wird ... Um also auf den Promi zu kommen, 2 Mio Nutzer haben den in ihrer Freundesliste und bekommen daher jede Nachricht / Tweet oder wie das auch immer heißen mag -

In dem Fall braucht man natürlich keine weitere Tabelle anhand derer diese Beziehung quasi nochmal kopiert wird .. Aber irgendeine Form von Zuordnung zwischen User A und seinen Freunden muss existieren .. sonst könnte ja die Nachricht nicht verteilt werden
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #11 (permalink)  
Alt 09-08-2010, 13:28
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Man kommt intuitiv zu folgendem DB-Design:
Code:
user(id, name, ...)
message(user_id, text, timestamp)
follower(user_id, follower_id)

# alle Messages aller User denen $currentUserID folgt
SELECT * 
FROM message m 
JOIN follower f ON m.user_id = f.user_id
WHERE f.follower_id = $currentUserID
ORDER BY m.timestamp DESC
Wenn dir das zu langsam ist, kannst du mit zusätzlichen Tabellen gegensteuern, aber dann brauchst du natürlich mehr Speicherplatz.

Übrigens gibt es Open Source Twitter-Clones. Schau doch mal nach wie die ihre Daten speichern!
Mit Zitat antworten
  #12 (permalink)  
Alt 10-08-2010, 11:34
Jayjay
 Registrierter Benutzer
Links : Onlinestatus : Jayjay ist offline
Registriert seit: Jul 2008
Beiträge: 87
Jayjay ist zur Zeit noch ein unbeschriebenes Blatt
Standard

top danke, ich wusste noch nichts von der join funktion aber diese erscheint mir logisch
Mit Zitat antworten
  #13 (permalink)  
Alt 10-08-2010, 15:38
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wer JOIN nicht kennt, kann auch Normalisierung nicht kennen. Das gehört allerdings zu den Grundlagen. Du solltest dich da unbedingt belesen (Wikipedia als Einstieg)!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Twitter: Nur den letzten Status auslesen mac4design PHP Developer Forum 10 09-09-2009 09:15
HR 3 Gewitter-Twitter Berni Out of Order 1 25-06-2009 17:46
Aufbau Twitter / Mikroblog / Facebook Truncate SQL / Datenbanken 11 13-01-2009 22:19
PHP News hand Out of Order 1 09-09-2002 22:52

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:17 Uhr.