Hallo zusammen!
Ich habe mir mal überlegt, ob es gescheiter wäre, ein PvP-Duellsystem mit normal polling oder long polling/comet & sleeps zu machen. Hier mal meine Überlegungen:
Normal polling:
Request z.B. alle 2 Sekunden. HTTP, auswerten, etc. (Muss ich hier nicht genauer ausführen...)
Long polling:
Funktionsweise: db-check, sleep(2000), db-check, sleep(2000), etc.
Bis die Daten zur Verfügung stehen.
Für jeden solchen Client wird vom Apache ein Thread (child process (Unix)) erstellt und gescheduled. Ein Kollege hat mal bei sich auf dem Laptop festgestellt, dass das Schedulen bei bereits 300 Threads überhand nimmt (ich habe ähnliche HW-Ressourcen auf dem Server). Er benutzte jedoch kein sleep() von PHP - wahrscheinlich macht das aber keinen Unterschied (oder?)
Meine Frage: Was ist "besser"? Dabei geht es vor allem um Performance (es sei denn, letzteres ist z.B. gar nicht möglich - es sieht aber soweit nach einer validen Lösung aus)
Würde mich sehr über fachlichen Input freuen!
Gruss
Onyx
Ich habe mir mal überlegt, ob es gescheiter wäre, ein PvP-Duellsystem mit normal polling oder long polling/comet & sleeps zu machen. Hier mal meine Überlegungen:
Normal polling:
Request z.B. alle 2 Sekunden. HTTP, auswerten, etc. (Muss ich hier nicht genauer ausführen...)
Long polling:
Funktionsweise: db-check, sleep(2000), db-check, sleep(2000), etc.
Bis die Daten zur Verfügung stehen.
Für jeden solchen Client wird vom Apache ein Thread (child process (Unix)) erstellt und gescheduled. Ein Kollege hat mal bei sich auf dem Laptop festgestellt, dass das Schedulen bei bereits 300 Threads überhand nimmt (ich habe ähnliche HW-Ressourcen auf dem Server). Er benutzte jedoch kein sleep() von PHP - wahrscheinlich macht das aber keinen Unterschied (oder?)
Meine Frage: Was ist "besser"? Dabei geht es vor allem um Performance (es sei denn, letzteres ist z.B. gar nicht möglich - es sieht aber soweit nach einer validen Lösung aus)
Würde mich sehr über fachlichen Input freuen!
Gruss
Onyx
Kommentar