Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Automatisieren von Web-Aktualisierungen (https://www.delphipraxis.net/124570-automatisieren-von-web-aktualisierungen.html)

capo 21. Nov 2008 01:41


Automatisieren von Web-Aktualisierungen
 
[Edit 1] Titel geändert
[Edit 2]Evtl. bin ich im falschen Forum.

Ich möchte euch fragen wie ihr folgendes Problem lösen würdet.
Ich habe einen Shop der duch verschiedene Phpscripte im Sinne von Cronjobs aktualisiert wird.
Ich muss nun ein Programm realisieren welches bestimmte Jobs zu bestimmten, individuellen Zeiten durchführt.
Im Programm soll eine URL und eine Zeit eingegeben werden.
Der Vorgang ist immer wieder der gleiche. Eine URL wird aufgerufen und die Aktualisierung wird zu einer bestimmten Zeit durchgeführt, entweder über einen Webbrowser oder über eine Http-Komponente.

Mein Problem sind die Komponenten. Ich weiß nicht wieviel Komponenten (Webbrowser, IdHttp) ich brauche, es können bis zu 50 und mehr Jobs eingegeben eingegeben werden.
Ich dachte schon daran die Komponente dynamisch zu erzeugen.
Was meint ihr dazu?

Grüße
Capo

Matze 21. Nov 2008 05:05

Re: Automatisieren von Web-Aktualisierungen
 
Hallo Capo,

ich würde eine einzige Komponente (idHTTP beispielsweise) nutzen und diese zu bestmmten Zeiten mit den entsprechenden URLs füttern. Falls mehrere Aktualisierungen zur gleichen Zeit ausgeführt werden sollen, könntest du diese in einer Schleife abarbeiten. Dann wäre das bei gleicher Zeit eben nicht sekundengenau.

Grüße, Matze

DP-Maintenance 21. Nov 2008 05:06

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "VCL / WinForms / Controls" nach "Internet / LAN / ASP.NET" verschoben.
Ich denke, das passt hier besser hin.

capo 21. Nov 2008 09:46

Re: Automatisieren von Web-Aktualisierungen
 
Hallo Matze,
danke für deinen Gedankengang.

Kann man mit einer einzigen IdHttp-Komponente mehrere Dinge gleichzeitig tun und dann auch noch auf bestimmte Meldungen reagieren z.B. wenn Job erledigt ist?
Wenn so ein Job gestartet wurde kann er immerhin 20-30 Minuten dauern.

Gruss
Capo

capo 21. Nov 2008 13:12

Re: Automatisieren von Web-Aktualisierungen
 
Bzw. reicht es aus wenn IDHttp den Prozess anschubst und dann den Kontakt zu dem Script beendet?
Viele Grüße
Capo

nahpets 21. Nov 2008 13:56

Re: Automatisieren von Web-Aktualisierungen
 
Hallo,

mit Deiner Fragestellung komme ich noch nicht so recht klar:

Fragen:
Ein Programm und ein Server?
Das Programm soll dem Server für n Jobs den Anstoß geben, etwas zu tuen?

technisches:
Die Zahl der gleichzeitigen HTTP-Verbindungen zwischen Client und Server ist begrenzt (2?).

Wenn es darum geht, den Server nur "anzustoßen", aber keine Ergebnisse der Arbeit zu erwarten, könntest Du hergehen, per HTTP den Anstoß geben, der Server quittiert Dir sofort, dass er den Auftrag angenommen hat und arbeitet den Job im Hintergrund ab. Vom Ergebnis dieser Abarbeitung erfährst Du nichts. Hier reicht eine Komponente aus, die die Aufräge in 'ner Schleife absetzt.

Musst Du in der Komponente auf die Ergebnisse warten, dann benötigst Du je Job eine Komponente.

Alternativ wäre auch möglich:

Eine Komponente setzt die Aufträge ab, der Server quittiert sofort "Auftrag erhalten" und legt, nachdem er den Job erledigt habt, das Ergebnisse an einer definierten Stelle ab. In einer Schleife könnten diese definierten Ablagestellen der Jobs dann wieder per HTTP abgefragt werden, bis der Client die erwünschten Ergebnisse erhält, die er dann auswerten kann.

capo 21. Nov 2008 22:42

Re: Automatisieren von Web-Aktualisierungen
 
Zitat:

Zitat von nahpets
Ein Programm und ein Server?

Ja, ein Server und ein Programm (das auf einem anderen Rechner läuft).


Zitat:

Zitat von nahpets
Das Programm soll dem Server für n Jobs den Anstoß geben, etwas zu tuen?

Ja, einen Anstoß geben.
Das Programm soll einen Shopdatenbank (Mysql)aktualisieren.
Es gibt mehrere Links die sozusagen Php-Dateien aufrufen die ihrerseits Daten in die Shopdatenbank importieren.
Wenn ich so einen Link aufrufe (funktioniert auch über den Webbrowser) erhalte ich nach dem Import eine Nachricht (kein alert oder popup)
Auch zu Begin erhalte ich eine Meldung.

Müßte also mit dem Anstoß reichen, oder?

Müßte ich dann mit einem Post erreichen können?


Gruß
Capo

capo 23. Nov 2008 12:53

Re: Automatisieren von Web-Aktualisierungen
 
Hallo...
ich nochmal, ich habe nochmal darüber nachgedacht, ein Anstoß reicht doch nicht, muss die "Fertig"- Meldung doch noch weiter verarbeiten.

Vergessen zu erwähnen habe ich:
Über die externe Datei wird eine Mysql-Datenbank aktualisiert.

Noch ein Gedanke dazu:

Die URL's stehen untereinander in einem Stringgrid inkl des Zeitinterwalls. Ist es möglich für jede Zeile eine eigene IDHttp dynamisch zu erstellen?
Hat jemand von Euch schonmal sowas gemacht. Evtl. ein Beispiel für mich?

Freundliche Grüße
Capo

capo 23. Nov 2008 18:44

Re: Automatisieren von Web-Aktualisierungen
 
Hallo...ich brauche dringend Hilfe, evtl. nerve ich damit jetzt auch, aber es ist wirklich dringend.

Matze 23. Nov 2008 20:06

Re: Automatisieren von Web-Aktualisierungen
 
Hallo Capo!

Ich habe jetzt nur folgendes gelesen:
Zitat:

Zitat von capo
Die URL's stehen untereinander in einem Stringgrid inkl des Zeitinterwalls. Ist es möglich für jede Zeile eine eigene IDHttp dynamisch zu erstellen?
Hat jemand von Euch schonmal sowas gemacht. Evtl. ein Beispiel für mich?

Theoretisch sollte das schon gehen. Du könntest die Komponente dynamisch erstellen und einem Array zuweisen, um diese leicht ansprechen zu können. Nur finde ich das keine saubere Möglichkeit.

Grob könnte das so aussehen:

Delphi-Quellcode:
private
  MyIdHTTPs: array of TIdHTTP;

// ...

SetLength(MyIdHTTPs, StringList.Count);

for i := 0 to StringList.Count - 1 do
begin
  MyIdHTTPs[i] := IdHTTP.Create(Form1);
  try
    MyIdHTTPs[i].Get(); // oder .Post() oder wie auch immer
  finally
 
  end;
end;
Ich vermute, im "finally" darf man das noch nicht freigeben, doch das könntest du im OnDestroy-Ereignis oder im finalization-Abschnitt erledigen. Theoretisch würde ich sagen, dass es nicht mal erforderlich ist, da der Owner in diesem Fall "Form1" ist und die Komponenten daher freigegeben werden, sobald Form1 freigegeben wird.
In dem Fall wäre "finally" natürlich überflüssig.

Evtl. hilft's, evtl. nicht. Viel Erfolg.

Grüße, Matze


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
Seite 1 von 2  1 2      

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