18. januar 2003 - 19:47Der er
5 kommentarer og 1 løsning
Chat uden opdatering
Hej eksperter! Jeg er GODT irriteret over min chat den blinker når den loadet, og tænkte på om man med en eller anden funktion kunne gøre således at den ikke skal opdatere framen!
Mit forslag ser således ud (kun lidt kode, da jeg ikke ved hvordan det skal laves! ;))
Man laver en funktion som trækker rækkerne ud fra databasen som normal function hentdata() { $foresp = mysql_query("SELECT * FROM chat") while($row = mysql_fetch_array($foresp)) { $msg = $row["msg"]; echo"$msg<br>"; } }
så vil jeg lave en for eller while på en eller anden måde while(1 < 3) { print hentdata(); }
men jeg ved ikke om man kan gøre det på denne måde, eller om det er for resurce krævende! Jeg mangler også en funktion der sletter teksten inden den udskriver det igen, og sådan at den ikke kommer med timeout efter lidt tid!
Håber på der er nogen der har forstået hvad jeg vil og kan hjælpe mig på en eller anden måde! ;)
Det du så gør er at lade php stå og vente og vente og vente til der kommer mere der skal skrives, og det er, som du selv er inde på, gevaldig resourcekrævende.
der skal holdes en serverconnection åben i det uendelige og det koster. Det er så også grunden til at det nok kun vil virke på en server du selv sætter op og ejer. Der er ikke mange udbydere der tillader et skript kører mere end 30 sekunder før de standser det.
For at undgå timeout sætter du denne linie ind i toppen af dit script, dog skal du være opmærksom på at den ikke virker hvis din server kører i safe mode
set_time_limit( 0 ) ;
Du kan godt lave det med PHP, så den ikke opdaterer, her er et lille eksempel, skal nok rettes til.
while(1 < 3) { $output = hentdata( ) ; sleep( 5 ) ; // Vent 5 sekunder for ikke at dræbe serveren flush( ) ; // Send resultatet til browseren $output = "" ; }
Der er dog nogen problemer med den metode. Det er knapt så behageligt for serveren, derfor har jeg sat den til at sove i 5 sek for hver opdatering, bør nok ikke sættes ned. Desuden er det ikke alle browsere der helt understøtter at få sendt data løbende på den måde, de vil istedet vente til alt data er modtaget før de viser siden, hvilket vil sige at din side aldrig vil blive vist. Kan ikke lige komme med en liste over browsere det virker i, eller omvendt.
Du kan vælge en anden løsning, hvor der opdateres i en usynlig frame, og ved hjælp af javascript skriver du det direkte ind i chatten. Det er den mest anvendte løsning, problemet er at det kan være lidt kryptisk at få til at virke, og som altid med javascript er det ikke altid lige nemt at få det til at virke i alle browsere.
hvis I er "sure" over I ikke har fået point så læg en klage! hehe
Synes godt om
Ny brugerNybegynder
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.