| Autor | Beitrag | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Mi 28.09.16 15:45 
 
Also die Message an sich kommt in dem Hauptthread an aber dort lässt das Flag nur dann den Refresh zu wenn der vorherige zurückgekommen ist.
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 
 | procedure TfrmWebSiteAnalyser.UpdateURLList;begin
 if DomainCrawler.URLListQuery.Active and DomainCrawler.DoRefresh then
 begin
 DomainCrawler.DoRefresh := false;
 DomainCrawler.URLListQuery.Refresh;
 end;
 end;
 |  | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 29.09.16 01:35 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - Für diesen Beitrag haben gedankt: NOS
 | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Do 29.09.16 09:10 
 
Hi Frühlingsrolle    Hier ergibt sich bei mir die Problematik dass ich in den Threads mehrere Querys habe die bestimmte Teile der Analyse schreiben um nicht jedes mal, bei nur einer query, das prepare und parsen des sql statements und der params zu haben.
 Im Moment scheint es so dass es einen Stack Overflow gibt bei langsamen und älteren rechnern. Ich finde nur keinen Ansatz momentan das Problem zu finden. | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Do 29.09.16 09:59 
 
Da sollte der Stacktrace ja weiterhelfen. Den bekommst du z.B. mit MadExcept oder Eurekalog. Für diesen Beitrag haben gedankt: NOS
 | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Do 29.09.16 10:38 
 
Hi Jaenicke    probiere ich mal aus | 
|  | 
| Sinspin 
          Beiträge: 1335
 Erhaltene Danke: 118
 
 Win 10
 RIO, CE, Lazarus
 
 | 
Verfasst: Do 29.09.16 13:14 
 
	  |  NOS hat folgendes geschrieben  : |  	  | Im Moment scheint es so dass es einen Stack Overflow gibt bei langsamen und älteren rechnern. Ich finde nur keinen Ansatz momentan das Problem zu finden. | 
 Gibt es wirklich einen Stack Overflow? Ich vermute eher das zu viele Nachrichten kommen. Ich kenne ein paar Fälle bei denen das am Ende dann mit einem Stack Overflow endet.
 Problem scheint nach wie vor zu sein dass Du an der falschen Stelle entscheidest ob Refresh geht oder nicht.
 Du kannst Events aus deinem Thread schicken die anzeigen dass da noch was läuft. Aber Refresh solltest du wirklich via Timer direkt vom Form aus organisieren. Probiers mal    €: Krankes Quote geheilt.
 €2: Schönheit verbessert._________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
 
 Zuletzt bearbeitet von Sinspin am Do 29.09.16 14:53, insgesamt 2-mal bearbeitet
 Für diesen Beitrag haben gedankt: NOS
 | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Do 29.09.16 13:25 
 
Ok .... checke ich gleich mal ab ob das mit einem timer was bringt | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Do 29.09.16 20:09 
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 29.09.16 22:29 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - Für diesen Beitrag haben gedankt: NOS
 | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Fr 30.09.16 08:22 
 
	  |  Frühlingsrolle hat folgendes geschrieben  : |  	  | Es muss doch garnicht so umständlich sein. Hast du dich garnicht an meinem Beispiel versucht?  | 
 Hi und guten Morgen,
 aber sicher habe ich mir dein beispiel angeschaut und auch darauf geantwortet (weiter oben). Zum einen ist der Aufbau bei mir aus Performancegründen anders (mehrere TFdQueries für das schreiben in verschiedene Tabellen) und dazu komt noch das Du die Threads ja im eigentlichen Sinne nicht parallel arbeiten hast sondern nacheinander.
 Hier gehts aber um Webseiten die jenseits der 200.000 URL's liegen und die Threads laufen alle parallel mehrere Stunden. Da sieht es schon ganz anders aus. | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 30.09.16 08:58 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Fr 30.09.16 09:12 
 
Die Problematik fängt ja da an wo die Datenmenge zu groß wird. Also wenn du dein Beispiel mal so veränderst dass es permanent schreibt und die threads nicht hintereinander ablaufen wirst du sehen dass das mehr probleme macht denke ich. | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Fr 30.09.16 20:13 
 
	  |  Frühlingsrolle hat folgendes geschrieben  : |  	  | Auch wenn du es so machst, so landen die Datensätze nicht gleichzeitig in die DB, sondern nacheinander, wie bei mir. | 
 Doch, bei ihm schreiben mehrere Threads wirklich parallel. Das verzahnt die DB dann natürlich zu einer Sequenz von Einträgen, aber die Daten der einzelnen Threads laufen parallel an der DB auf. | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Fr 30.09.16 20:18 
 
In dem Fall vielleicht schon, aber bei großen Datenmengen wird das doch zeitkritisch oder bin ich da auf dem Holzweg ? Wenn die Threads dauernd daten in die db schreiben sieht es doch schon anders aus. Außerdem wirkt doch das Connectionpooling von Firebird da auch noch mit rein oder bin ich da auf dem Holzweg ? | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Sa 01.10.16 14:32 
 
So ... also abstürzen bzw. Stack Overflows gibt es nun nicht mehr .... der Refresh funktioniert auch jeweils nacheinander .... im Moment teste ich in wie weit das die Analysegeschwindigkeit an sich beeinflusst an einer großen URL (bundestag.de)
 Ich habe gesehen dass das DBGrid die Datensätze intern irgendwie umstellt oder sehe ich das falsch ? Wenn ich in dem SQL statement kein order by nutze etc. müsste es doch in der reihenfolge des addens angezeigt werden, also inkrementierte ID ... aber es sieht so aus .... sortiert das grid irgendwo ?
 
Einloggen, um Attachments anzusehen!
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 01.10.16 15:59 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Sa 01.10.16 16:55 
 
	  |  Frühlingsrolle hat folgendes geschrieben  : |  	  | Das dürfte wohl eher an den Threads liegen, so wie es jaenicke beschrieben hat: 
 	  | Zitat: |  	  | [...] Das verzahnt die DB dann natürlich zu einer Sequenz von Einträgen [...] | 
 | 
 Aber die URL 16530 an 28ter Stelle ? Soviele URLs sind zu dem Zeitpunkt der Analyse noch nicht einmal gefunden und zur DB geadded ... die taucht irgendwann während des aktualisierens auf | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 01.10.16 21:56 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - Für diesen Beitrag haben gedankt: NOS
 | 
|  | 
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Sa 01.10.16 22:12 
 
Werde ich morgen mal checken .... danke und gute nacht   | 
|  |