Avatar billede sukos Juniormester
24. juli 2002 - 08:16 Der er 27 kommentarer og
1 løsning

loadVariablesNum

Hej
Min kære "nevø", nikolajdu, hjalp mig en gang med at få et textfelt til at loade indholdet af en txt-fil, ikke bare en gang, men "hele tiden" :

loadVariablesNum ("chat.txt?"+random(9999), 0, "GET");

Det er for såvidt også fint nok, men der er jo bare den ulempe, at browseren stille og roligt "æder" alle ram op!
Altså, jo længere tid man er på siden, jo mere ram bliver der brugt.

Hvordan undgår jeg det?
Avatar billede barklund Nybegynder
24. juli 2002 - 08:59 #1
Får de indlæste variabler nye navne hver gang eller har de de samme standard-navne?

Er der perioder, hvor flash-klienten står "helt stille". Altså kan nå at afvikle sit script i en frame og gå videre til den næste og stadig holde sig under framerate?

Hvis referencerne til de gamle variabler fjernes og klienten har en sådan død periode, hvor den har afviklet sit script i en frame og står og venter på, at den skal gå til næste frame ifølge dens framerate, først dér udfører den garbage-collection... Det er lidt i problem og har også skabt store problemer for mig (DR's nye netplayer åd 200 mb ram, når den havde været åben i 4-5 timer - den står og læser XML hele tiden...). For at være helt sikker på, at referencerne til de gamle variabler slettes, så kan man lave en

delete oldvar;

Og sikre sig, at objekter aldrig indeholder referencer til sig selv, for så kan de jo aldrig dø...

/Barklund
Avatar billede sukos Juniormester
24. juli 2002 - 09:07 #2
hmm, lige nu er der 3 frames, hvor frame 1 har ovenstående action.
og movien kører jo bare i loop hele tiden.

Det er meningen at jeg vil lave en chat sammen med PHP.
PHP skal gemme indtastninger i nye linier og holde styr på chatbrugere i txt-filen, som flashen så skal loade.

txtfilen er så noget a'la':

_root.test2=
navn1: noget text
navn1: mere text
navn2: text
o.s.v.
Avatar billede barklund Nybegynder
24. juli 2002 - 09:55 #3
Så der er noget med:

frame 1:
load

frame 2:
[tom]

frame 3:
if (enellerandencheckvar) {
    enellerandenchechvar = false;
    updateTextfelt();
    gotoAndPlay(1);
} else {
    gotoAndPlay(2);
}

Har du denne struktur, så vil der være mulighed for garbage-collection i frame 2, da der her ingen kode er... Du skal sørge for i frame 1 inden din load, at slette alle de variabler, som bliver læst ind. Går du dette, så burde det virke.

Har du ikke ovenstående struktur, så lav det om til ovenstående - det er jeg 100 på, at man kan med samme resultat...

/Barklund
Avatar billede barklund Nybegynder
24. juli 2002 - 09:56 #4
(...og hvis jeg kender nikolaj vel, så hedder du checkvar nok "yepdu", "loadeddu" eller tilsvarende.... :o)
Avatar billede nikolajdu Nybegynder
24. juli 2002 - 14:34 #5
Barklund - Plejer at hedde yepDu - hehe :))

Sukos - Hvorfor gemme indholdet i en tekst fil?? Den kan hurtigt blive meget meget stor?
Avatar billede nikolajdu Nybegynder
24. juli 2002 - 14:41 #6
Du kan nok med mere held bruge:

this.loadvar

onClipEvent (data) {
    if (yepDu) {
        gotoAndPlay("updateTekstfelt");
        yepDu = false;
    }
}
Avatar billede nikolajdu Nybegynder
24. juli 2002 - 14:41 #7
Hvor blev den første dog af :

onClipEvent (load) {
    this.loadVariables("minPHP.php?ran="+random(9999));
}
Avatar billede nikolajdu Nybegynder
24. juli 2002 - 14:50 #8
ups, kom vidst til at trykke udfør før jeg blev færdig med forklaringen.

Altså sæt (load) på et movieclip, når så der modtages (data) så tjekker du for om yepDu = true (skal til sidst i txtfilen.) og går så ellers til den frame der skal opdatere dit textfelt.

I roden på siden kan du så med fordel bruge :

function hentDu(){
_root.movieCLipNavn.loadVariables("minPHP.php?ran="+random(9999));}
setInterval(hentDu,5000)

Sætter filmen tl at loade teksten hvert 5. sekund.

Kan stoppes igen med :

clearInterval(hentDu)

/Nikolaj
Avatar billede nikolajdu Nybegynder
24. juli 2002 - 14:51 #9
For PHP´en til mySql se på http://www.eksperten.dk/spm/236525
Avatar billede baitianlong Nybegynder
24. juli 2002 - 16:14 #10
nepotismeDu();    ((((O;
Avatar billede nikolajdu Nybegynder
24. juli 2002 - 16:21 #11
nikopotismeDu();
Avatar billede barklund Nybegynder
24. juli 2002 - 16:29 #12
nikotismeDu();
Avatar billede baitianlong Nybegynder
24. juli 2002 - 16:35 #13
nekrofilismeDu();
Avatar billede barklund Nybegynder
24. juli 2002 - 16:50 #14
spamismeDu();
Avatar billede barklund Nybegynder
24. juli 2002 - 16:51 #15
nikotismeDu = function(person) {
    return (typeof person == "nerd");
}
Avatar billede sukos Juniormester
25. juli 2002 - 06:44 #16
Nåh, jeg fatter ikke en skid. Næsten ikke da.
Kun "yepDu" men det siger jo også sig selv. :O)

barklunds lød som om det var fornuftigt.

For at resumere: (Mest for min egen skyld)
Jeg prøver på at lave en chat og vælger at bruge flash til at vise chatteksten, da jeg ellers skulle bruge en refresh af siden for at få nye indlæg vist.
Og indlæg skal vises med det samme, og ikke efter 5 sek. eller lign. Ellers kunne jeg bare lave det meget nemmere med alm. html
Jeg bruger PHP til at håndtere en txtfil. Derved kan jeg også håndtere størrelsen på filen, samt få vist sidste indlæg først.

Det jeg har gjort indtil nu, er flg.

Lavet en movie, chat.fla, med en frame.
I den frame har jeg lagt et movieclip, ved navn chatfelt, (movieclip fordi jeg så altid bare kan trække det over i en anden *.fla fil)
I det movieclip er der tre frames, hvori tekstfeltet "chattekst" er placeret.
For den første frame bruger jeg så:
loadVariablesNum ("chat.php?"+random(9999), 0, "GET");

Og hvad er det så jeg skal gøre?
Tjekke om en variabel er sat? Hvilken variabel?
Avatar billede barklund Nybegynder
26. juli 2002 - 13:40 #17
Har du MX?

For så kan vi lave den med enkelt frame med lækker kode :o)
Avatar billede sukos Juniormester
26. juli 2002 - 13:47 #18
Næh, men der er mulighed for at låne en comp med MX.
Lyder lovende barklund!

Fik ellers lige nikolajdu til at kikke på det, og her blev løsningen så'n lige at frame 1 loader chat2.php, uden nogen send og rand m.m., men indeholdende en "No-cache_control" og den tekst som skal vises.
IE stoppede godt nok med at bruge ram, men cpu-forbrug steg 10% og hvert 4-5 sek. blev php.exe afviklet.
Og det er jo så'n set også lidt ged.
Avatar billede sukos Juniormester
26. juli 2002 - 13:47 #19
Sætter osse lige lidt flere point på.
Avatar billede barklund Nybegynder
26. juli 2002 - 14:04 #20
dit script i frame1 (MX):

<code>
loadHandler = function(succeded) {
    if (succeded) {
        _root.chatfelt.chattekst = this.chattekst
        _root.intervalID = setInterval(loadContainer, "dotheload", 1000);
    }
}
loadContainer = new LoadVars();
loadContainer.dotheload = function() {
    clearInterval(_root.intervalID);
    this.load("my.php");
}
_root.intervalID = setInterval(loadContainer, "dotheload", 1000);
</code>

Jeg skulle mene, at det virker...

Mht. no-cache-headers, så må du hellere huske dem alle sammen, så alle browserversioner fatter det:

<php>
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                         
</php>

/Barklund
Avatar billede barklund Nybegynder
26. juli 2002 - 14:05 #21
De "1000" er load-frekvensen i millisekunder (altså nu 1 sekund)... Sæt den endelig ned, hvis du ønsker...
Avatar billede sukos Juniormester
26. juli 2002 - 14:06 #22
Det prøver jeg lige af i aften! :O)
Avatar billede barklund Nybegynder
26. juli 2002 - 14:07 #23
Nåja... "my.php" skal udskiftes med din "chat2.php"... :o)
Avatar billede sukos Juniormester
26. juli 2002 - 14:10 #24
jøp :O)
Avatar billede sukos Juniormester
17. september 2002 - 00:25 #25
Jeg har sgutte fået prøvet det af endnu, men ellers så påstod nikolajdu at han havde set dit forslag, og kunne komme med noget andet, så jeg har alt at vinde og intet at tabe! (:O]

Og så er jeg ret sikker på det virker, barklund's forslag!
Så smid lige et svar, barklund, så det kan afsluttes.
Avatar billede barklund Nybegynder
17. september 2002 - 16:14 #26
Hopla! :o)
Avatar billede sukos Juniormester
18. september 2002 - 14:44 #27
Værsgo!
Avatar billede barklund Nybegynder
18. september 2002 - 14:49 #28
Tarker... :o)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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