Avatar billede baitianlong Nybegynder
23. oktober 2004 - 13:34 Der er 8 kommentarer og
1 løsning

Køre funktion flere gange uden at reloade siden.

Hey.
Jeg har tænkt på at lave en funktion til min smukke chat, som checker om der er kommet en ny post i databasen og hvis der er, reloader den siden, eller endnu bedre henter og skriver alle posterne...

Som det er nu, reloader den siden hvert femte sekund med javascript, og det er ikke optimalt. Med andre ord, ønsker jeg en funktion ligesom javascripts setTimeout(), men blot i PHP.
Avatar billede baitianlong Nybegynder
23. oktober 2004 - 13:36 #1
Jeg kunne selvfølgelig lave funktionen rekursiv, men det er vist lidt for meget !
Avatar billede Slettet bruger
23. oktober 2004 - 13:53 #2
Jeg ville foreslå at lave en skjult iframe der tjekker hvert 5 sekund, for med PHP vil du jo rende ind i timeout problemer næsten uanset hvad du gør.
Avatar billede jakoba Nybegynder
23. oktober 2004 - 15:31 #3
brugerens browser (hvor javascript kører) er klient
dit hosting sted (hvor php kører) er server.

Og der er MEGET strenge regler om hvordan klient og server skal opføre sig. serveren må aldrig starte noget. Det eneste den må er at svare når en klient spørger den om noget.

Det hedder Client/Server modellen og den er hellig, for uden den risikerer vi alle mulige slags deadlocks og andre computerproblemer.

Så ideen om at få PHP til at sende en side til brovseren uden at browseren har bedt om det kan du godt slå ud af hovedet. Det skal være browseren der spørger.

men browseren behøver ikke at bede om HELE siden hver gang, den kunne fx blot spørge om "er der noget nyt?" og så kun genhente siden hvis svaret er ja. Det er det du kan bruge el_barto's skjulte iframe til. Det du henter ind i den iframe behøver jo ikke være smukt html designet eller noget, det skal bare være svar på hvad du spørger om.

mvh JakobA
Avatar billede coderdk Praktikant
23. oktober 2004 - 17:16 #4
el_barto, dér har vi set_time_limit(0);
Der ér en sleep funktion i php, der hedder sleep() :)
Der er flere (eller mindst én) chat der benytter sig af "streaming" http - altså, hver klient har en forbindelse til serveren, som ikke slutter, nogensinde. Det er selve "chatsiden" der er streaming, input osv, laver du som normalt med posts/gets til en anden side.
Bemærk at der er adskillige ulemper ved denne løsning - Du kan risikere at løbe tør for forbindelser eller apacheservere eller lignende.

http://dk2.php.net/set_time_limit
http://dk2.php.net/sleep
Avatar billede baitianlong Nybegynder
24. oktober 2004 - 15:51 #5
Hmm, jeg er ikke helt sikker på at jeg forstår hvad i anbefaler. Det der er irriterende ved min chat nu, er at den siger klik hvert 5 sekund og kører loadbar i statuslinien. Jeg synes det ville være bedre hvis den hentede når der var noget nyt uden at reloade hele tiden.

Jeg forstår jeres indlæs sådan at jeg skal lave en iframe med en php side i, der checker om tiden for seneste indlæg er nyere end sidste gang, og hvis den er skal den anden frame med chatten i reloades ?! Er det sådan i mener ?

Den ser sådan her ud nu: www.legende.dk/chat/chatlogin.php Hvor synes i så jeg skal lave den iframe ? Og kan jeg så reloade chatframen fra iframen med:

parent.parent.chatframe.location.href = parent.parent.chatframe.location ?
Avatar billede Slettet bruger
24. oktober 2004 - 15:55 #6
coderdk> Medmindre det er hans egen server er der ikke store chancer for at kunne ændre time limit.

De fleste har begrænset den til 30 sekunder, for at et enkelt fejlagtigt script ikke skal dræbe hele serveren.
Avatar billede Slettet bruger
08. november 2004 - 08:24 #7
Er det tid til at lukke?
Avatar billede baitianlong Nybegynder
23. november 2004 - 17:34 #8
Jeps, jeg må hellere få lukket her :) Kan i ikke smide et svar, folkens?
Avatar billede coderdk Praktikant
23. november 2004 - 17:37 #9
Ved ikke om jeg hjalp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester