Se status på opdatering

Tags:    php

Hej alle,

Jeg er igang med et lille system, som skal læse en kæmpe fil igennem, og dertil vil jeg gerne at jeg kan tjekke statusen på hvor langt den er. F.eks Linjer læst: ".($instUpdate->instLine+1)."

Min kode er her, og jeg har lavet sådan at når den bliver opdateret, så gemmer den linje nr. i $instLine.
Fold kodeboks ind/udKode 




7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Dit problem er, at når du kalder start() methoden, så returnerer den ikke før hele filen er læst, så når du når ned til at skrive ud, hvor langt den er nået, så er den færdig.

Det du KAN gøre at at bruge asynkrone kald (Ajax) og så streame JavaScript tilbage løbende (f.eks. ved 5%, 10%, 15% osv.), som så udføres og som opdaterer feltet.



Dit problem er, at når du kalder start() methoden, så returnerer den ikke før hele filen er læst, så når du når ned til at skrive ud, hvor langt den er nået, så er den færdig.

Det du KAN gøre at at bruge asynkrone kald (Ajax) og så streame JavaScript tilbage løbende (f.eks. ved 5%, 10%, 15% osv.), som så udføres og som opdaterer feltet.


Hmm..nej, det kan du jo faktisk heller ikke.
Meeeen du kan måske inkludere en PHP fil i et script tag, som så streamer JavaScript:

<script type="text/javascript" src="myscript.php"></script>

Fold kodeboks ind/udKode 


Noget i den stil.



Indlæg senest redigeret d. 09.12.2008 11:25 af Bruger #2695
Har prøvet de fleste metoder. Den sidste metode jeg kan komme på er at den skriver ned i en fil hvilken linje den er ved, og derved kan jeg benytte javascript til at hente indholdet af den fil (hvilken linje den er ved).

Men til det første du siger, så tager det ca. ½-1 min. at læse filen



Men det letteste ville være hvis jeg bare kunne holde mig til den metode jeg bruge -> at den gemmer den linje den sluttede ved, og starter derfra når filen er indlæst igen.



Men det letteste ville være hvis jeg bare kunne holde mig til den metode jeg bruge -> at den gemmer den linje den sluttede ved, og starter derfra når filen er indlæst igen.


Du kan bruge ftell() og fseek() funktionerne til at søge til en bestemt lokation i filen.

ftell() fortæller dig, hvor du er nu (ikke linje, men hvor mange bytes, du er nået forbi), og fseek() kan så søge tilbage til det sted.



Kan sgu ikke få det til at virke uden jeg får fejl. Kan du se hvad der er galt?

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 09.12.2008 15:50 af Bruger #11184
Kan sgu ikke få det til at virke uden jeg får fejl. Kan du se hvad der er galt?

Fold kodeboks ind/udKode 


fseek() skal have tre argumenter:
1)
Et filehandle. Ikke et filnavn, men objektet for den åbnede fil.

2)
Et offset som er i bytes. Ikke linjer.

3)
whence som indikerer hvorfra der skal søges.
Det kan være enten: SEEK_SET, som betyder "søg fra begyndelsen af filen", SEEK_CUR, som betyder "søg i forhold til nuværende position", eller SEEK_END, som betyder "søg i forhold til filens slutning".


Den her forstår jeg slet ikke:
Fold kodeboks ind/udKode 

Dit $idfyFile er et objekt for den åbne fil. Den kan du ikke "explodere" på den måde.



Indlæg senest redigeret d. 09.12.2008 16:09 af Bruger #2695
t