Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 9 HttpServer Thread Frage (https://www.delphipraxis.net/107792-indy-9-httpserver-thread-frage.html)

GuenterS 2. Feb 2008 10:03


Indy 9 HttpServer Thread Frage
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

marabu 2. Feb 2008 20:05

Re: Indy 9 HttpServer Thread Frage
 
Hallo Günter,

das Problem ist, dass dein Command Handler nicht fertig wird, bevor das nächste Event gefeuert wird. Du wirst einen Multi-Threading-Server implementieren müssen, damit deine Ersatzlösung mit einem richtigen HTTP-Server konkurieren kann.

Freundliche Grüße

GuenterS 2. Feb 2008 21:31

Re: Indy 9 HttpServer Thread Frage
 
Das bedeutet, ich habe weiterhin eine HttpServer Komponente und im OnCommandGet starte ich einen eigenen Thread?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz