[PHP/SQL/AJAX] Caching

Gestart doorMiel25 reacties85 weergaven

26 berichten · pagina 1 van 2

Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hoi One2xs,

Ik ben bezig met een website waar ik een groot aantal berichten onder elkaar ga weergeven. Deze berichten worden uit een MySQL database gehaald. Nu is het zo dat er elke seconde een nieuw bericht bij kan komen.

Nu wil ik dat ik met Ajax (Het liefst met jQuery) elke seconde checken of er een nieuw bericht is, zo ja; Deze toevoegen aan de lijst, zo nee; niks doen.

Tot nu toe heb ik dit:

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #FF8000]//Berichten ophalen uit database[/COLOR]
[COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM messages LIMIT 20"[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #FF8000]//Berichten weergeven[/COLOR]
[URL="http://www.php.net/while"]while[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$row[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]))
{[/COLOR]
       
       [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$row[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]user_id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000] - [/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$row[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]message[/COLOR][COLOR= #007700]];
       
}[/COLOR]
?>


Het enige probleem is dat ik geen idee heb hoe ik dit moet gaan doen.biggrin Hebben jullie ideeën of tips voor me?
Alvast bedankt!

Met vriendelijke groet,
Miel
0
Berichten
10.409
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #FF8000]// Includes[/COLOR]
[URL="http://www.php.net/include"]include[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]config.php[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #FF8000]//Berichten ophalen uit database[/COLOR]
[COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM messages LIMIT 20"[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #FF8000]//Berichten weergeven[/COLOR]
[URL="http://www.php.net/while"]while[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$row[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]))
{[/COLOR]
       
       [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$row[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]user_id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000] - [/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$row[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]message[/COLOR][COLOR= #007700]];
       
}[/COLOR]
?>
0
Erik

Lid

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Wtf wat doe jij? Hij weet heus wel dattie een config moet includen.. emoEn trouwens, dat script werkt niet eens.
0
Berichten
1.168
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dan moet je een php bestand aanmaken die steeds de berichten weergeeft, en dat bestand moet je dan aanroepen met AJAX.
0
Erik

Lid

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Het werkt volgens mij al hoor. Maar ik kan het mis hebben.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Even voor de duidelijkheid omdat mensen het volgend mij niet snappen:

Hij wil niet elke keer alle berichten opnieuw ophalen uit de database en vervolgens echoen, hij wil alleen wanneer er een nieuw bericht is, dat nieuwe bericht bij de andere zetten en dan weergeven. Vervolgens blijven de oude berichten weer staan, en wanneer er weer een nieuw bericht is komt die er ook weer bij te staan.

Ik denk dat de enige optie is om je berichten in een ander bestand weg te schrijven, ik zou niet weten hoe je het anders zou moeten doen. Of je moet gebruik maken van een server die de berichten naar de pagina pusht. Dat wil dus zeggen dat je met sockets naar die server moet luisteren tot je een nieuwe notificatie van de server krijgt, en die vervolgens verwerken. Maar dat is zeker niet makkelijk.
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik, ik heb al een oplossing, alleen werkt die nog niet helemaal..
Ik moet een timestamp vergelijken met een datetime, alleen lukt dat niet.
0
Berichten
3.000
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Knip lama
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
SELECT ... FROM ... WHERE datum < DATE_ADD(tijdding, INTERVAL 1 DAY)

Iets in die trant misschien?
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
NeeeeeyummieIk moet een variabele ($timestamp) in een query doen, en dan kijken of date later is dan die timestamp. Date is een datetime.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Dan moet je toch nog elke seconde ofzo die query uitvoeren?

Ik zou max 1x per seconde een bestandje opbouwen met alle resultaten van de laatste 5 seconden, en die door de browsers laten ophalen, das een stuk minder intensief dan elke seconde tig queries.
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ja maar het probleem is dat ik ook bepaalde groepen op wil halen.
Bijvoorbeeld WHERE category = 1.. Dat gaat niet zo lekker met een bestandje.
0
Berichten
10.409
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Erik schreef:
Wtf wat doe jij? Hij weet heus wel dattie een config moet includen.. emo
En trouwens, dat script werkt niet eens.

waarom staad dat niet bij zijn script dan.
0
Berichten
5.957
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Omdat het maar een klein deel is emo
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Miel schreef:
Ja maar het probleem is dat ik ook bepaalde groepen op wil halen.
Bijvoorbeeld WHERE category = 1.. Dat gaat niet zo lekker met een bestandje.
Ligt eraan.
Als die berichten wel voor iedereen te zien mogen zijn, kun je de categorie ook gewoon in het bestandje erbij zetten en met javascript de goede berichten eruit pikken.
En anders maak je gewoon een paar bestandjes... alles beter dan 1000 queries per seconde hè.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren