Domanda

Sto cercando di fare upload multipli di immagini tramite il tag <cffileupload>. Il tag chiama un file chiamato fileupload.cfm di processo / finalizzare l'immagine.

All'interno di quella immagine che voglio cominciare un filo (qui è dove potrei non capire threading, quindi me lo faccia sapere) in modo che io posso rispondere 'immagine caricata' di nuovo al l'upload applicazione flash, ma avviare un processo di generazione delle miniature (che potrebbe durare 1 minuto o giù di lì, a seconda delle dimensioni del file).

Finora ho aggiunto qualcosa del tipo:

<!--- 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>

che io chiamo il metodo generateThumbnails, e utilizzando un media id (mid) come riferimento su cui voce da processo. Credo che gli stampi filo tho non appena si raggiunge la fine del file fileupload.cfm.

Non sono sicuro se questo è solo qualcosa che dovrei cercare di correre dietro a tutti i file vengono caricati?

Pensieri? Non sei sicuro di come ottenere questo funziona correttamente.

Modifica

Dopo alcuni ritocchi, sembra come se avessi un errore non correlato al thread che ho fissato, ma dovrei tenere nulla in mente con 'lasciando' le discussioni di questo tipo? Dovrei uccidere ad un certo punto? Saranno solo essere ripuliti dopo il completamento? Come posso mettere una 'tempo di esecuzione massimo' a un filo?

È stato utile?

Soluzione

Se si esegue un filo e non si chiama in realtà <cfthread action="join" /> ad un certo punto dopo il thread verrà eseguito, in parallelo al tuo thread di esecuzione della pagina e, se necessario, verrà eseguito per molto più tempo fino a quando non completa il suo compito.

Non c'è nessun problema lasciando le discussioni correre come questo - saranno puliti come ci si aspetterebbe, una volta completato.

Se volete vedere se un thread è in esecuzione solo cfstat familiare che elencherà tutte le richieste in esecuzione - anche quelli ha dato il via da cfthread.

Avete probabilmente visto la documentazione CF qui , ma più a che il check out indagini di Ben Nadal qui .

Per quanto riguarda i timeout di thread - è possibile specificare un tempo massimo di attesa per i thread creato per l'esecuzione pagina di ricongiungersi, ma per quanto ne so non c'è modo di mettere un timeout (come un timeout richiesta di pagina) sul thread creato

Speranza che aiuta!

Altri suggerimenti

Una nota:

La documentazione parla di "zero o più attributi applicazioni specifiche". Vorrei prestare attenzione a questo. Questo crea una copia locale della variabile, che consente di passare a valori che non verrà modificato.

Quindi, vorrei chiamare

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

ha senso?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top