|
| Information pushing Fra : Frowning Freezer |
Dato : 18-03-08 09:18 |
|
Hvis man har en klient der står og venter på at modtage data fra serveren
når den er færdig med at behandle et request eller en anden handling giver
anledning til det, hvordan er det så smartest og gøre dette?
Lige nu bruger jeg AJAX kald hvert halve sekund tilbage til serveren (fordi
opdateringen på klienten skal ske meget hurtigt - og indtil videre kører jeg
kun på LAN) for at se om der er sket nogle ændringer, men det giver jo et
overhead uden lige med pakker frem og tilbage konstant! Kan jeg ikke lave en
connection til serveren og holde den åben indtil der er data at returnere
til klienten? Hvis der er mange klienter kan det så give problemer med antal
connections til serveren?
Allan
| |
Martin (18-03-2008)
| Kommentar Fra : Martin |
Dato : 18-03-08 10:49 |
|
Frowning Freezer wrote:
> Hvis man har en klient der står og venter på at modtage data fra serveren
> når den er færdig med at behandle et request eller en anden handling giver
> anledning til det, hvordan er det så smartest og gøre dette?
>
> Lige nu bruger jeg AJAX kald hvert halve sekund tilbage til serveren (fordi
> opdateringen på klienten skal ske meget hurtigt - og indtil videre kører jeg
> kun på LAN) for at se om der er sket nogle ændringer, men det giver jo et
> overhead uden lige med pakker frem og tilbage konstant! Kan jeg ikke lave en
> connection til serveren og holde den åben indtil der er data at returnere
> til klienten? Hvis der er mange klienter kan det så give problemer med antal
> connections til serveren?
Ikke med PHP... måske du kan med noget .NET
| |
Frowning Freezer (19-03-2008)
| Kommentar Fra : Frowning Freezer |
Dato : 19-03-08 09:11 |
|
>> Hvis man har en klient der står og venter på at modtage data fra serveren
>> når den er færdig med at behandle et request eller en anden handling
>> giver anledning til det, hvordan er det så smartest og gøre dette?
>>
>> Lige nu bruger jeg AJAX kald hvert halve sekund tilbage til serveren
>> (fordi opdateringen på klienten skal ske meget hurtigt - og indtil videre
>> kører jeg kun på LAN) for at se om der er sket nogle ændringer, men det
>> giver jo et overhead uden lige med pakker frem og tilbage konstant! Kan
>> jeg ikke lave en connection til serveren og holde den åben indtil der er
>> data at returnere til klienten? Hvis der er mange klienter kan det så
>> give problemer med antal connections til serveren?
>
> Ikke med PHP... måske du kan med noget .NET
Hmmm, det er faktisk ikke helt umuligt har jeg nu fundet ud af...! Hvis man
laver et loop i sit PHP script og venter et lille stykke tid mellem hver
gang man tjekker om der er sket ændringer med sleep() eller usleep() (så man
holder klient forbindelsen åben X antal sekunder), så sparer man i hvert
fald kommunikationen frem og tilbage mellem klient og server. Selvfølgelig
er det så serveren der venter i stedet for og den kommer nok til at køre
scriptet oftere end ellers, da PHP jo ikke har nogen "watch" funktion. Men
det må vel være bedre end at lave nye server-client connections hele tiden??
Der er selvfølgelig en time limit på http requesten, men efter X sekunder
kan man jo afslutte scriptet, returnere til klient, som så igen med det
samme laver et nyt request til serveren...
Allan
| |
|
|