Avatar billede elskermad.dk Nybegynder
18. januar 2003 - 19:47 Der 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! ;)
Avatar billede jakoba Nybegynder
18. januar 2003 - 20:30 #1
Det kan faktisk gøres på den 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.

mvh JakobA
Avatar billede tangveje Nybegynder
18. januar 2003 - 20:32 #2
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.
Avatar billede tangveje Nybegynder
18. januar 2003 - 20:35 #3
Ups, noget i denne stil

while(1 < 3) {
    $output = hentdata( ) ;
    sleep( 5 ) ; // Vent 5 sekunder for ikke at dræbe serveren
    echo $output ;
    flush( ) ;  // Send resultatet til browseren
    $output = "" ;
}
Avatar billede Slettet bruger
18. januar 2003 - 20:37 #4
Se evt. http://www.eksperten.dk/spm/139721
Se bort fra backslashene.
Avatar billede elskermad.dk Nybegynder
20. januar 2003 - 18:46 #5
lukker pga olebole mener jeg skal gøre det! ;)
Avatar billede elskermad.dk Nybegynder
20. januar 2003 - 18:47 #6
hvis I er "sure" over I ikke har fået point så læg en klage! hehe
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

IT-JOB

JP/Politikens Hus

Netværkstekniker

Capgemini Danmark A/S

AI Data Architect

Supporters A/S

Support specialist

BEC Financial Technologies

Development Manager for Document Lifecycle

Capgemini Danmark A/S

Microsoft AI Solution Architect