Anfänger-Frage: Datenbank-Cronjob oder Threading-Lösung

19/10/2008 - 15:04 von Christian Schlemmer | Report spam
Hallo,

In einer Web-Applikation, rufe ich nach einem Submit eine Seite auf, welche
vom User upgeloadete Bilder verarbeitet. Mometan habe ich es so gelöst, dass
der User nach dem Submit eine Statusanzeige sieht (die Seite welche die
Bilder verarbeitet làuft in einem versteckten iframe) und nach der
Bilderverarbeitung erfolgt ein redirect. Dies kann je nach Dateimenge ein
Weile dauern und ist davon abhàngig dass der User das Browserfenster wàhrend
der Verarbeitung offen làsst.

Jetzt möchte ich die Seite "barrierefrei" machen und die Bildverarbeitung
auslagern. Mein Lösungsansatz war, nach dem Submit den SessionId (Ordnername
mit den Bildern=SessionId) in einer Datenbank zu speichern und diese mit
einem Cronjob periodisch auszulesen und die Bildverarbeitung zu starten.

Ich hab von sogenannten Threadings gehört, wo es möglich ist dass ein Thread
im Speicher bleibt auch wenn der User das Browserfenster schliesst und dass
man damit praktisch einen Methodenaufruf im Speicher ablegen kann.

Bitte um Info, ob dass so möglich ist, oder doch besser den
Datenbank-Cronjob?

Vielen Dank.

mit Besten Grüssen,
Christian
 

Lesen sie die antworten

#1 Thomas Bandt
20/10/2008 - 11:31 | Warnen spam
Christian Schlemmer schrieb:
Ich hab von sogenannten Threadings gehört, wo es möglich ist dass ein Thread
im Speicher bleibt auch wenn der User das Browserfenster schliesst und dass
man damit praktisch einen Methodenaufruf im Speicher ablegen kann.



Du kannst mit Threads arbeiten, da die aber "von Natur aus" nur begrenzt
verfügbar sind, macht das imho absolut keinen Sinn - einzige Begründung
die ich da gewöhnlich "gelten lasse" ist die Nutzung eines
Shared-Hosting-Angebots, also fehlender Admin-Zugriff auf den Server.
Wenn du den hast würde ich einfach per
System.Diagnostics.Process.Start() eine Kommandozeilen-App aufrufen, die
die nötige Arbeit für dich übernimmt. Den Status kannst du ja in der
Datenbank aktualisieren, so dass auch übers Web eine Statusanzeige
möglich wird. Die so aufgerufene App làuft in einem eigenen Prozess auf
dem Server - und solange du nicht 100 Uploads auf einmal hast, ist das
die imho beste und performanteste Lösung. Falls es doch so viele sind,
würde ich einen Windows-Dienst schreiben, der die Jobs nacheinander
abarbeitet.


Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de - Beratung, Entwicklung
http://www.dotnetjob.de - .NET-Stellenmarkt
http://blog.thomasbandt.de - Thomas goes .NET

Ähnliche fragen