Hallo,
ich experementiere gerade etwas mit den
Indy Komponenten herum. Derzeit verwendet wir ein Apache Modul, welches ich gerne durch einen eigenen Dienst ersetzen würde. Das Apache Modul hat ursprünglich Aufrufe entgegengenommen und entsprechend derer Aktionen gestartet, wie zubereitung eines
XML Files und versand dieses an eine andere Adresse. Es war also nicht der typische Webserver, der einem Browser
HTML Seiten zur Ansicht übermittelt.
Ich wollte nun halt mal testen wie gut die HTTPServer Komponente von
Indy (Version 9) mit massiven Anfragen umgehen kann und ob es auch die Reihenfolge einhalten kann und tut.
Dazu habe ich mir ein kleines Testtool geschrieben, welches Server und Client zugleich ist.
Bei jeder Anfrage soll in einem bestimmten Verzeichnis eine Text-Datei angelegt werden, in welcher die Zahlen 0-5000 stehen. Das Interessante ist jedoch der Dateiname. Angefangen wird dieser mit einer Zahl welcher einem internen Zähler des Webservers entspricht + dem Teil welcher aus der Anfrage (QueryParams) kommt.
Wenn man eine Anfrage an diesen Server schickt in der Form
http://..../?test1 dann wird eine Datei, je nach internem Zählerstand des Webservers, 1_test1.txt erzeugt.
Das schicken der Anfragen wird in eigenen Threads erzeugt, da sonst ja auf beendigung der Get Anfrage gewartet wird.
Für jeden Aufruf wird ein andere Parameter übergeben (die Zahl vor dem .txt wird erhöht).
Wenn alles korrekt funktionieren würde, hätte ich mir Dateien in der Form
0_test0.txt
1_test1.txt
2_test2.txt
usw.
erwaratet.
Diese wurde auch teilweise erfüllt, allerdings nicht bei allen. Komischerweise sind zwar alle Dateien angelegt worden, es wurde keine vergessen, jedoch spielt der Zähler im Webserver etwas verrückt (wird nicht immer erhöht).
So bekomme ich bsp. Dateien wie
0_test0.txt
1_test1.txt
1_test2.txt
1_test3.txt
2_test4.txt
Ich hänge das Projekt inklusive der ausführbaren Datei mal gezippt an. Ich habe es mit Delphi7 Professional erstellt.
Wäre toll, wenn jemand wüßte was da falsch läuft.