Hur fungerar denna sidan i grunden? [PHP]

Permalänk
Medlem

Hur fungerar denna sidan i grunden? [PHP]

Hej gott folk!

Jag har en fråga angående en sida vid namn http://www.bloggkoll.com

Det är en sida där man kan lägga till sina favoritbloggar och sedan bevaka dom.
Så fort en blogg har skrivit ett nytt inlägg så blir man meddelad antingen direkt på sidan eller via mail.

Då är frågan: Hur kollar dom detta?

Hur är detta byggt i grunden?

Läser den av RSSerna på bloggarna var 5:e minut typ och ser om det är något nytt?

Men hur blir det när det är MÅNGA användare på sidan som alla har flera olika bloggar.
Hur är databasen designad för att köra detta?

Skulle vara väldigt snällt om någon hade kunnat förklara detta

Jag har ungefär ett hum om hur detta skulle fungera men vill gärna ha det förklarat av folk som har lite bättre koll på sånt här.

Jag har rätt bra koll på PHP & MySQL så ni kan köra "kod-snack" om ni förstår vad jag menar, hehe.

Väldigt tacksam för svar.

Tack på förhand!

Visa signatur
Permalänk
Medlem

Troligen har den alla bloggarna listad i en tabell så att om flera användare har en blogg, hämtas den ändå bara en gång.

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Purren
Troligen har den alla bloggarna listad i en tabell så att om flera användare har en blogg, hämtas den ändå bara en gång.

Hur exakt menar du? Förstår att man måste köra med relationsdatabaser.

Men hur hade ni designat databasen för att allt ska bli så optimalt som möjligt? Nu när en användare kan vara kopplad till flera olika bloggar. Samt att vi snackar om MÅNGA användare

Visa signatur
Permalänk
Medlem

Jag skulle gissa på att de kör med något slags blog ping-system. Så fort de får en ping från en blog kollar de upp vilka användare som bevakar den och skickar meddelandet. En tabell för bloggar, en tabell för användare och en tabell som kopplar användare till bloggar skulle jag gissa på.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Phod
Jag skulle gissa på att de kör med något slags blog ping-system. Så fort de får en ping från en blog kollar de upp vilka användare som bevakar den och skickar meddelandet. En tabell för bloggar, en tabell för användare och en tabell som kopplar användare till bloggar skulle jag gissa på.

Jag tror inte Bloggkoll får en ping från bloggarna, för man kan lägga till vilken blogg som helst (måste ha feeds) på Bloggkoll och inga ping-länkar eller liknande läggs till... då fungerar väl inte den metoden, eller? Hur skickar sidorna en ping till Bloggkoll då? Dom måste lägga till Bloggkoll i sin pinglista, men antar att en hel del inte ens vad pinglista innebär.

Skulle vara intressant att veta hur det ligger till då jag är i tankarna att utveckla något i den riktningen.

Visa signatur
Permalänk
Medlem

En tabell för bloggarna med t.ex. url och bloggid
En tabell som håller koll på användarnas bevakningar av bloggarna, med t.ex. bevakningsid, bloggid och användarid.
En tabell med användare och användarid.
En tabell med nya inlägg där man skapar en flagga varje gång ett nytt inlägg hittas, och tar bort flaggan när användaren har kollat på inlägget.

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem

Tack så mycket för era svar, den databasdesignen låter vettig. Ska fila vidare på det där!

Då är nästa fråga, hur ska man på bästa sätt hämta informationen från bloggarna? Dom kan alltså inte pinga mig till en början iaf.

Man kanske får köra en så kallad decay-funktion som bara läser av dom bloggar som uppdateras frekvent oftare? Man får läsa av deras RSSer rätt många gånger per dag, men tror inte dom uppskattar det så mycket

Visa signatur
Permalänk
Medlem

Om jag skulle göra en sådan applikation skulle jag helt enkelt läsa av RSS-en var 15e minut, oavsett blogg. Så mycket trafik per blogg handlar det inte om.

Om du vill vara snäll skulle du kunna bara läsa första inlägget ur RSSen och kolla datumet, jämföra med databasens senaste och så slipper du 90% av det övriga feedet.

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Purren
Om jag skulle göra en sådan applikation skulle jag helt enkelt läsa av RSS-en var 15e minut, oavsett blogg. Så mycket trafik per blogg handlar det inte om.

Om du vill vara snäll skulle du kunna bara läsa första inlägget ur RSSen och kolla datumet, jämföra med databasens senaste och så slipper du 90% av det övriga feedet.

Nej, det är sant. Så mycket trafik handlar det inte om man läser av RSSerna

Nu har jag fått lite ordning på databasen och det börjar likna något.

Men jag undrar över det du skrev tidigare om:

"En tabell med nya inlägg där man skapar en flagga varje gång ett nytt inlägg hittas, och tar bort flaggan när användaren har kollat på inlägget."

Hur ska det fungera? Och hur ska man göra när det är flera användare? Väldigt tacksam om du hade kunnat förklara det mer utförligt.

Skönt att det börjar klarna upp mer och mer nu om hur det hela ska fungera Måste säga tack till er!

Just nu ser databasdesignen ut såhär ungefär:

users
--------id
--------name
--------password
--------mail

blogs
--------id
--------name
--------url
--------feedUrl
--------category_id
--------lastUpdate

bevakningar
--------id
--------blog_id
--------user_id

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Purren
Om du vill vara snäll skulle du kunna bara läsa första inlägget ur RSSen och kolla datumet, jämföra med databasens senaste och så slipper du 90% av det övriga feedet.

Du måste ju fortfarande hämta hela feeden...

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av You
Du måste ju fortfarande hämta hela feeden...

Det stämmer, måste ju läsa in hela...

Någon som har någon aning om hur jag ska göra med Posts-tabellen?

"En tabell med nya inlägg där man skapar en flagga varje gång ett nytt inlägg hittas, och tar bort flaggan när användaren har kollat på inlägget." - Purre

Någon som kan förklara lite närmare...

Fan detta var lite svårare än vad jag trodde från början... tänkte aldrig på dessa problemen i början.

Men det är bra med lite utmaningar så utvecklar man sig mer!

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av xarph
bevakningar
--------id
--------blog_id
--------user_id

Du behöver inget id i en sån här tabell, kolumnerna blog_id + user_id tillsammans utger ett fullgott id.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

Antingen skulle du kunna använda bevakningar med en extra kolumn typ "updated" och sätta den till en 1a vid varje nytt inlägg och en 0a när det är läst.

Du skulle kunna flytta ut den informationen till en annan tabell annars, typ "notifications", och skapa/ta bort rader beroende på om användaren ska informeras.

I det senare fallet kan det vara en ide att ha ett "id" under bevakningar.

Och ni som säger att man man måste läsa hela, om jag inte har fel behöver man inte göra det. Du kan väl läsa precis så mycket som du behöver. Du kan visserligen inte använda de inbyggda XML funktionerna, men det är en annan sak.

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Purren
I det senare fallet kan det vara en ide att ha ett "id" under bevakningar.

Om man ska vara litet puritan och hålla tabellerna i normalform så ska det inte vara något id i tabellen bevakningar eftersom en användare aldrig kommer att ha flera bevakningar på samma blogg. Detta sprider sig även till tabellen notifications.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

Men du behöver ju hålla koll på vilken rad i notifications som gäller vilken användare. Visst, det kanske går att skippa id, men varför göra det svårt för sig?

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Purren
Men du behöver ju hålla koll på vilken rad i notifications som gäller vilken användare. Visst, det kanske går att skippa id, men varför göra det svårt för sig?

Kolumnen user_id är till för att hålla reda på vilken använder det rör sig, blog_id vilken blog. Med bara de två kolumnerna i nyckeln kan det bara finnas en rad per användare och blog, och varje användare kan bara bevaka en blog en gång, eller hur? Därför är det i längden lättare om man designar databasen så att det inte går att göra fel. Om detta är för krångligt för dig får du givetvis göra som du vill.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

Så som jag ser det behöver du antingen upprepa kolumnerna blog_id och user_id i notifications eller använda sig av bevaknings_id. Det är det jag diskuterar här.

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Purren
Så som jag ser det behöver du antingen upprepa kolumnerna blog_id och user_id i notifications eller använda sig av bevaknings_id. Det är det jag diskuterar här.

Ja, om den användare kan ha flera notifications från en blog så behöver man ett id även i notifications-tabellen. Det är tabellen bevakningar som inte behöver ett id:

Citat:

Ursprungligen inskrivet av Purren
I det senare fallet kan det vara en ide att ha ett "id" under bevakningar.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

Jag förstår vad ni menar. Men nu har jag blivit lite förvirrad.

Stegvis.

1. Spindeln (feedcrawler.php) crawlar alla feedsen som finns i databasen. Inga problem här.

2. Crawlern kollar om URLen till inlägget finns i databasen redan (eftersom URLen är unik) - Om den inte finns -> Lägg till (i vilken tabell?)

3. Här säger det stopp. En notifications-tabell som Purren föreslog låter vettigt. Men hur ska den vara utformad?

Problemet är att min hjärna på något vänster inte kan koppla ihop hur det ska fungera med notifications till varje användare... o.sv...

Jag uppskattar som sagt verkligen er hjälp, och ni har redan hjälpt mig en hel del på traven

Visa signatur
Permalänk
Medlem

Jag har inte helt pejl på hur bloggkoll fungerar, men såhär skulle jag göra utefter det jag förstått:

1. Spindel crawlar allting.
2. Kollar om URLen redan finns, om den inte finns:
2a. Lägg till URLen
2b. Beroende på vilken variant du väljer t.ex. skapa en notificationrad som motsvarar användaren och bloggen i notifications.
3. När användaren sedan loggar in läser den alla användarens notifications och raderar de när applikationen bedömer att användaren läst inläggen.

Angående tabellstrukturen får du tänka till lite över vilken sorts information du ska skicka med dina inlägg, men t.ex.

Notifications
(userid + blogid) / bevakningsid
url
excerpt (Första 200 tecken från inlägget t.ex.)

Så t.ex. för fem nya inlägg skulle det skapas fem notification-rader i notificationtabellen. När användaren har läst dessa, raderas de ur tabellen.

Vänliga hälsningar,
P

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem

Tack så mycket Purren!

Det fungerade utmärkt

Återkommer om jag "fastnar" igen

Tack ännu en gång.

Visa signatur