Frage

Ich versuche, mehr Bild-Uploads über den <cffileupload> Tag zu tun. Der Tag ruft eine Datei fileupload.cfm zu verarbeiten / finalisieren das Bild genannt.

Innerhalb dieses Bild ich einen Thread beginnen wollen (hier ist, wo ich nicht verstehen kann Threading, so lassen Sie mich wissen), so dass ich antworten kann zurück in den Flash-Upload-App ‚Bild hochgeladen‘, sondern initiieren eine Miniatur-Erzeugungsprozess (die 1 min dauern könnte oder so, je nach Dateigröße).

Bisher habe ich so etwas wie:

<!--- BUILD A THREAD TO CREATE / GENERATE THUMBNAILS --->
<cfthread action="run" name="t#qMid.mid#">
    <cfinvoke component="core.media-functions" method="generateThumbnails">
        <cfinvokeargument name="mid" value="#qMid.mid#">
    </cfinvoke> 
</cfthread>

Ich rufe die generateThumbnails Methode und unter Verwendung eines media id (mid) als Referenz, auf dem Punkt zu verarbeiten. Ich denke, die Gewinde stirbt tho, sobald wir das Ende der fileupload.cfm Datei erreichen.

Nicht sicher, ob dies ist nur etwas soll ich versuche zu laufen, nachdem alle Dateien hochgeladen werden?

Die Gedanken? Nicht sicher, wie diese Arbeit richtig zu erhalten.

Bearbeiten

Nach einiger Bastelei, sieht aus wie ich hatte einen Fehler in keinen Zusammenhang mit dem Faden, den ich fest, aber soll ich weiterhin alles daran mit ‚verlassen‘ Themen wie das? Sollte ich töte sie irgendwann? Werden sie kurz nach Abschluss gereinigt werden? Wie kann ich eine an einem Faden ‚max Ausführungszeit‘?

War es hilfreich?

Lösung

Wenn Sie einen Thread laufen und nicht tatsächlich <cfthread action="join" /> nennen irgendwann später der Faden, parallel zu Ihrer Seite Ausführungs-Thread ausgeführt werden, und bei Bedarf viel länger läuft, bis er abgeschlossen ist seine Aufgabe.

Es gibt kein Problem Threads laufen wie diese verlassen - sie gereinigt werden, wie man erwarten würde, sobald sie vollenden.

Wenn Sie wollen sehen, ob ein Thread gerade laufen cfstat läuft, die alle laufenden Anfragen auflistet - auch solche, getreten von cfthread aus.

Sie haben wahrscheinlich die CF docs hier gesehen aber weiter zu prüfen, ob aus Ben Nadal Untersuchung hier .

Wie für Thread-Timeouts - können Sie eine maximale Zeit angeben, um für Threads warten Sie auf rejoin Seite Ausführung erstellt, aber AFAIK gibt es keine Möglichkeit, einen Timeout zu setzen (wie eine Seite Anfrage Timeout) auf dem Thread Sie erstellt.

Ich hoffe, das hilft!

Andere Tipps

Ein Hinweis:

Die docs sprechen von „Null oder mehrere anwendungsspezifische Attribute“. Ich würde auf diese achten. Dadurch entsteht eine lokale Kopie der Variablen, so dass Sie in Werte übergeben, die geändert werden nicht.

Also, ich würde nennen

<cfthread action="run" name="t#qMid.mid#" mid="#qMid.mid#">
    <cfinvoke component="core.media-functions" method="generateThumbnails">
        <cfinvokeargument name="mid" value="#mid#">
    </cfinvoke> 
</cfthread>

Sinn?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top