AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy 9 HttpServer Thread Frage
Thema durchsuchen
Ansicht
Themen-Optionen

Indy 9 HttpServer Thread Frage

Ein Thema von GuenterS · begonnen am 2. Feb 2008 · letzter Beitrag vom 2. Feb 2008
Antwort Antwort
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#1

Indy 9 HttpServer Thread Frage

  Alt 2. Feb 2008, 11:03
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.
Angehängte Dateien
Dateityp: zip httpserver_448.zip (270,8 KB, 9x aufgerufen)
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Indy 9 HttpServer Thread Frage

  Alt 2. Feb 2008, 21:05
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
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Indy 9 HttpServer Thread Frage

  Alt 2. Feb 2008, 22:31
Das bedeutet, ich habe weiterhin eine HttpServer Komponente und im OnCommandGet starte ich einen eigenen Thread?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 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