Tisdag 6 Nov 2012
12.11.6 14:47
Kodar lite på ett Community
Japp, blev lite kodningssugen häromdagen så började koda på ett forum från scratch, första gången jag kodar på ett forum helt från scratch, tog inte så lång tid som jag först trodde att det skulle göra. Är dock lite kvar på forumet, eller ja, den mest dryga funktionen att koda på: en läst/olästa trådar funktion, alltså det är ju inte överdrivet svårt att koda själva funktionen men det är en sjukt tung funktion för databasen, det går att göra en funktion som sparar allt i $_SESSION eller i $_COOKIE men jag vill att funktionen skall fungera oavsett vilken dator personen loggar in på.
Finns 100 olika sätt att göra det på också, just nu har jag valt en ganska basic version, den är inte så jätteresurskrävande för servrarna och hyffsat stabil. En sådanhär funktion kommer alltid använda en jäkla massa rader i databasen, speciellt om det är massa användare, jag kommer att använda en MEMORY databas då datan som lagras är extremt tillfällig och inte speciellt mycket data per rad. När någon besöker en tråd så skapas det en rad i databasen som sparar “user_id” och “thread_id” värdena, sen när man besöker ett forum så hämtas alla rader i databasen som stämmer överens med användarens “user_id” och slänger in dessa i en array, för att sen visa om en tråd är oläst eller inte så är det bara att använda i PHP:s in_array() funktion. När någon sen postar i en tråd så tas alla rader i databasen bort som innehåller det “thread_id” som användaren postade sitt inlägg i. Då blir tråden oläst igen för alla.
Ett alternativ är ju att slänga in alla besökare i en egen kolumn i trådens rad, när någon då besöker tråden så lägger man till vilka “user_id” som har besökt tråden, efter några besök ser kolumnen ut ungefär såhär: “3,5,7,33,7733,5454,835,345,44″, då är det ju bara att göra en explode på den kolumnen, matchar då något av värdena användarens “user_id” så markeras tråden som läst. Problemet med detta är att det kan bli väldigt många som besöker en tråd och då kanske inte alla “user_id” får plats i kolumnen, så för att kompensera för detta får man kanske använda en LONGTEXT eller något annan storage i MySQL som kan rymma väldigt många tecken.
Att göra en “Markera alla forumtrådar som lästa”-funktion är väldigt enkelt, när någon trycker på den knappen så läggs datumet in i en kolumn, så trådar vars senaste inlägg är äldre än denna tidpunkten kommer att markeras som lästa.
Gjorde en enkel liten chatt också, går ju att expandera denna i framtiden också, kanske med en privatchatt del osv.
Har även börjat lite på användarprofilerna.
Skall göra Community koden så heltäckande som möjligt men ändå så “ren” som möjligt utan en massa lullull, detta för att man skall kunna återanvända koden för en rad olika Communities som man kanske kan lansera i framtiden, så är det ju bara att lägga ett par dagar på att customizera koden för just den sidan.