Delphi-PRAXiS

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

capo 23. Nov 2008 20:19

Re: Automatisieren von Web-Aktualisierungen
 
Danke Matze, damit kann ich schon viel anfangen. Obwohl ich noch viele Fragen dazu habe.
Ich denke, es ist schon etwas aufwändiger so ein Programm zu erstellen.

Warum ist deine Lösung unsauber?

Gruss vom Capo

Matze 23. Nov 2008 20:27

Re: Automatisieren von Web-Aktualisierungen
 
Hi

Zitat:

Zitat von capo
Warum ist deine Lösung unsauber?

Meine Lösung, nunja, ich meine eher deinen Vorschlag der dynamischen Erzeugung. ;)
Wenn du 1000 Links hast und 1000 Komponenten dynamisch erzeugt werden, weiß ich nicht, wie stark der RAM oder die CPU belastet wird und ob es nicht unerwünschte Nebeneffekte haben kann, weil sich irgendwas gegenseitig beeinflusst. Aber versuchen kannst du es. Ich weiß jedoch auch nicht, ob 1000 - mehr oder weniger - gleichzeitig arbeitende IdHTTP-Komponenten zuverlässig ihre Aufgabe erfüllen, oder ob Windows irgendwann einen Strich durch die Rechnung macht. Das sind aber alles nur Überlegungen, die nicht zutreffen müssen.

Grüße, Matze

capo 23. Nov 2008 20:29

Re: Automatisieren von Web-Aktualisierungen
 
es werden höchsten 50 links allerhöchsten.

Matze 23. Nov 2008 20:32

Re: Automatisieren von Web-Aktualisierungen
 
Ich habe meinem Beitrag nochmal etwas ergänzt. Bevor du an der Aufgabe scheiterst (es scheint ja sehr eilig zu sein), würde ich es einfach mal so versuchen, wie du es vorgeschlagen hast. Dann siehst du ja, ob's klappt oder nicht und wie die RAM-Auslastung und ähnliches verläuft.

capo 23. Nov 2008 20:46

Re: Automatisieren von Web-Aktualisierungen
 
ODer ich nehme 50 Komponenten und sage dass das Programm nur 50 Links verträgt.
Ist dann doch besser als die Dinger dynamisch zu erstellen.
Selbst dann ist es wahrscheinlich äußerst instabil, oder?
Danke für deine Hilfe!

Yo, es ist eilig! Leider.

Matze 23. Nov 2008 20:59

Re: Automatisieren von Web-Aktualisierungen
 
Da würde ich es auf alle Fälle dynamisch erstellen. Du bist dann doch viel flexibler und bei zukünftigen Anpassungen ist das wichtig.
Der Aufwand ist auch deutlich geringer als wenn du da nun 50 Komponenten abzählst und die IDE evtl. lange zum Wechseln in die Formularansicht braucht. Wenn weniger als 50 Links eingegeben werden, sind bei deinem Vorhaben Komponenten überflüssig und benötigen wieder mehr Speicher. Möchte man mehr als 50, dann hat man Pech.

So hast du ein Array und die Schleife, das war's.

capo 23. Nov 2008 21:03

Re: Automatisieren von Web-Aktualisierungen
 
Okay...dann mache ich es so.
Danke nochmal.

nahpets 24. Nov 2008 08:21

Re: Automatisieren von Web-Aktualisierungen
 
Hallo,

am Wochenende hab' ich mir die JVCL installiert und dort mal gestöbert.
Unter \JVCL\examples\JvUrlListGrabber gibt es ein Programm, das Linklisten abarbeiten kann. Das könnte für die ein passender Denkanstoß sein.

capo 24. Nov 2008 22:59

Re: Automatisieren von Web-Aktualisierungen
 
Danke, hab ich mir angesehen, ist nicht ganz so einfach dieses Thema.

capo 26. Nov 2008 11:39

Re: Automatisieren von Web-Aktualisierungen
 
..dankeschön für deine Antwort.


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