Toon posts:

[php] while(1) aanvaarbaar qua load?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een script, waarin een while(1) voorkomt. De bedoeling is dat de pagina zolang hij geopend is blijft laden, en wanneer er iets gebeurt, output het script direct naar de browser. Ik hoop dat jullie begrijpen wat ik bedoel.

Is zoiets aanvaarbaar qua load? Of blijft het heel langzaam je resources opslokken, totdat de boel uiteindelijk onvermijdelijk crasht?

Het moet uiteindelijk gaan draaien op een Unix/FreeBSD/Linux (weet ik niet precies, één van de drie) server.

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Ten eerste: niet alle browsers ondersteunen dit (goed). En het lijkt me sowieso geen goede oplossing, er zijn vast wel alternatieven voor. En tsja, de load kan je zelf toch regelen in php.ini?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Tja het zou wel kunnen, zou ik er wel een sleep (bestaat die in PHP?) in gooien, anders is het idd een brute oplossing.

Netter is dus bv een java applet die om de x seconden checkt of er nieuwe gegevens zijn of javascript die hetzelfde doet.

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 09:51

TheDane

1.618

waarom geen meta tag met een refresh van 5 seconden inpleuren zolang er geen content is ?

Verwijderd

Topicstarter
Helaas... het gaat hier om gegevens die via een socket binnenkomen, en die kan ik niet afsluiten of periodiek checken, dus... is dit de enige oplossing. Of het door alle browsers ondersteund wordt maakt me niet echt uit.

Ik zal eens kijken of een sleep (hij bestaat) hier een optie is.

Verwijderd

Topicstarter
Ik heb er een sleep ingegooid, zodat hij na elke iteratie tien seconden wacht. Ik neem aan dat dat de load aanzienlijk verlaagt... toch? Volgens mij doet ie anders zeker een aantal tientallen iteraties per seconde...

  • Hydra
  • Registratie: September 2000
  • Laatst online: 26-04 10:16
Op vrijdag 10 mei 2002 21:13 schreef sbesselsen het volgende:
Ik heb er een sleep ingegooid, zodat hij na elke iteratie tien seconden wacht. Ik neem aan dat dat de load aanzienlijk verlaagt... toch? Volgens mij doet ie anders zeker een aantal tientallen iteraties per seconde...
Tientallen? :)

Bij een sleep opdracht geeft het script aan dat 'ie ff met rust gelaten wil worden. De CPU kan dan die tijd voor andere threads gebruiken. Een zogenaamde 'busy wait' (je while(1)) verspilt alleen CPU-cycles.

https://niels.nu


Verwijderd

Topicstarter
Op vrijdag 10 mei 2002 21:30 schreef Hydra het volgende:

[..]

Tientallen? :)
Yeah whatever :)
Bij een sleep opdracht geeft het script aan dat 'ie ff met rust gelaten wil worden. De CPU kan dan die tijd voor andere threads gebruiken. Een zogenaamde 'busy wait' (je while(1)) verspilt alleen CPU-cycles.
Ja, ik snap het helemaal, ik denk dat het er zo toch een stuk beter op is geworden. Er is nog wel iets vreemds aan de hand: als ik mijn script draai op Win2000 (Apache als service), dan doet hij het de eerste keer altijd goed, maar de tweede of derde keer (na reload ofzo) gebruikt hij opeens 99% van de CPU... en dan moet ik Apache reloaden.

Het zou natuurlijk een foutje in het script kunnen zijn (;)), maar onderling zijn de sessies van het script niet verbonden, en de eerste keer doet hij het altijd wel goed. Wat dunkt u?

Verwijderd

Topicstarter
Hum, kennelijk was mijn systeem een beetje messed up. Na een reboot werkt alles na behoren, zelfs na vijf keer reloaden. Mèt een sleep van 10 seconden.

Ik ben u allen zeer erkentelijk voor de geboden hulp!
Pagina: 1