Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Threads und Indy-Kompos (https://www.delphipraxis.net/21397-threads-und-indy-kompos.html)

seddto1977 2. Mai 2004 12:23


Threads und Indy-Kompos
 
Ich möchte gerne eine kleine Internet-Anwendung mit Indy-Kompos zusammenbauen. Das ganze soll eine kleine Suchmaschine werden, die zu einem bestimmten Suchbegriff eine Google-Abfrage macht und dann mit Hilfe der http-Kombo die Suchergebnisse rekursiv nach Links durchsucht und alle Links weiterverfolgt.
Ich möchte damit das ganze schneller geht am liebsten mehrere Threads verwenden die gleichzeitig die Seiten laden und nach Links durchsuchen. Wie mache ich das bei mehreren Threads am besten. Soll ich mehrere indy-http-kombos verwenden die verschiedene Ports benutzen und dann den Thread prüfen lassen welche gerade frei ist oder wie geht das am besten?

SirThornberry 2. Mai 2004 12:46

Re: Threads und Indy-Kompos
 
da du eine html-seite abrufst wirst du einen client benutzen (Tidhttp) und damit brauchst du auch nicht verschiedene ports nutzen. Ich würde es so realisieren das du dem thread die seite übergibst die aufgerufen werden soll und dieser dan auch die http-componenten created und recursiv neue threads erzeugt. Allerdings solltest du aufpassen das du nicht zu viele threads erzeugst und auch nur eine gewisse tiefe rekursiv bearbeitest. Ansonsten kann es zu einer jahresaufgabe ausarten wenn jede seite wieder eine andere aufruft. Zusätzlich müsstest du noch überprüfen ob die seite nicht schon abgerufen wurde sonst kommt es zu einer endlosschleife wenn 2 seiten aufeinander verweisen

seddto1977 2. Mai 2004 12:57

Re: Threads und Indy-Kompos
 
Danke für die Antwort :) Eine Frage habe ich aber noch.
Wenn jeder Thread die url übergeben bekommt muss er sie mit hilfe der tidhttp Kompo dann ja laden. Damit diese Laden dann nicht zum Flaschenhals wird möchte ich das natürlich nicht als critical section markieren die nur ein Thread nutzen kann, sondern auch ermöglichen, das mehrere Threads gleichzeitig seiten laden. Kann ich das mit einer tidhttp kompo machen oder brauche ich da mehere?

SirThornberry 2. Mai 2004 13:05

Re: Threads und Indy-Kompos
 
ich würde jeden thread seine eigene idhttp create lassen - sonst gehts logicher weise schief weil die sonst ja in verwendung ist. Also im Execute des threads
Delphi-Quellcode:
var http1: tidhttp;
begin
  http1 := tidhttp.create(nil);
  //dann deine aufrufe
  http1.free;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 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