Moin!
@ Antwort von Sven Rautenberg
Ich weiß, dass du mir geantwortet hast - das sieht man am Threadbaum eindeutig. Das hier ist schließlich kein Board. :)
Ich danke dir für deine Antwort wobei ich der Meinung bin wenn mein Server mit einer 1Gbit angeschlossen ist und sagen wir 20 man bei mir ziehen und jeder von denen 100 MBit hat kann normalerweise nicht jeder 100MBit ausnutzen da die Server Leitung in diesem Fall das Nadelöhr ist.
Aber jeder von den 20 Clients hat dann noch Reserven was seine Netzwerkkarte betrifft und somit sollte sein Rechner eigentlich auch im Stande sein die ihm zugesicherte Bandbreite auszunutzen da jeder 50 MBit zugewiesen bekommt und sollte er fertig sein die Bandbreite sich auf die anderen verteilt.
Bedenke, dass das, was auf der "Leitung draufsteht", sich auf die physikalische Datenübermittlung auf dieser Leitung bezieht. Du kannst die 100MBit/s nicht einfach durch 8 teilen (8 Bit = 1 Byte) und 12,5 MByte/s Datenrate erwarten (oder 125 MByte/s auf der Gigabit-Leitung).
In Abhängigkeit vom verwendeten Protokoll und natürlich der erwähnten Latenz der Clients landest du u.U. bei deutlich geringeren Werten. Das aber nur am Rande.
Die Frage ist doch, was du unter "gerecht" genauer definierst.
Wenn der Download einer Datei 5 Minuten benötigt, du zwei Clients hast, und beide nach 10 Minuten die Datei haben, dann ist das - auch im Sinne des Bandbreitenmanagements - "gerecht", und zwar auch dann, wenn der eine Client die Datei durch Nutzung von 99% Bandbreite schon kurz nach 5 Minuten hat, und der andere die ganzen 10 Minuten drauf warten muß.
Natürlich könnte man die Zeitscheiben kleiner machen und z.B. alle 10 Sekunden die pro Client übermittelte Datenmenge prüfen, und dann in den nächsten 10 Sekunden entsprechend reduzieren.
Aber das hilft dir eben nur bedingt, denn es ist ja nicht gesagt, dass jeder Client die ihm zugewiesene Bandbreite voll ausnutzen kann.
Du würdest also folgendes beobachten:
Nach 10 Sekunden hat A 90% der maximalen Bandbreite (bzw. Datenmenge) abgegriffen, Client B nur 10%. Also reduzierst du die verfügbare Datenmenge für A auf 50%.
Nach den nächsten 10 Sekunden siehst du, dass Client B trotzdem nur 20% der maximalen Bandbreite abgerufen hat. Was nun? In diesen 10 Sekunden hast du 30% Bandbreite verschenkt, für die Client A dankbar gewesen wäre. Vielleicht hat Client B parallel noch andere Datentransfers auf seinem Interface.
Und wenn diese Transfers beendet sind, dann wird er vielleicht in der Lage sein, seine zugewiesenen 50% oder gar 100% auszunutzen. Wäre Client A dann mit Download schon fertig, wäre alles in Butter, Client B würde optimal bedient werden. Durch deinen Eingriff und die willkürliche Realisierung von "gerecht ist, wenn jeder nur seinen Anteil Bandbreite kriegt, und nicht mehr" reduzierst du also sogar deinen Service.
Das umsetzen dieser Aufgabe ist insofern kniffelig da PHP nicht dynamisch Webseiten Aktualisieren kann und daher in Verbindung mit Javascript benutzt werden muss. Alternativen wie FTP Server oder andere Share Programme habe ich aber ich würde es gerne über HTTP Realisieren.
Den Absatz verstehe ich nicht. Von PHP war bislang noch gar nicht die Rede, ebensowenig von Javascript. Du hast nach "Server" gefragt und der Möglichkeit des Bandbreitenmanagements.
Also: Was darf es jetzt sein?
- Sven Rautenberg
"Love your nation - respect the others."