Question

Je suis en train de faire plusieurs ajouts d'images via la balise <cffileupload>. La balise appelle un fichier appelé fileupload.cfm à traiter / finaliser l'image.

Dans cette image, je veux commencer un fil (voici où je ne pourrais pas comprendre le filetage, alors laissez-moi savoir) pour que je puisse répondre « image copiée » retour à l'application de téléchargement flash, mais lancer un processus de génération de vignettes (qui peut durer 1 min environ, en fonction de la taille du fichier).

Jusqu'à présent, j'ajouté quelque chose comme:

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

J'appelle la méthode generateThumbnails, et en utilisant un media id (mid) comme référence sur quel élément à traiter. Je pense que les matrices de fil tho dès que nous arrivons à la fin du fichier fileupload.cfm.

Je ne sais pas si cela est juste quelque chose que je devrais essayer de courir après tous les fichiers sont téléchargés?

Pensées? Je ne sais pas comment obtenir ce qu'il fonctionne correctement.

EDIT

Après quelques bricolages, on dirait que j'ai eu une erreur sans rapport avec le fil que je fixe, mais dois-je garder quoi que ce soit à l'esprit avec des fils « en laissant » comme celui-ci? Dois-je les tuer à un moment donné? Vont-ils être simplement nettoyés après la fin? Comment puis-je mettre un « temps maximum d'exécution » sur un fil?

Était-ce utile?

La solution

Si vous exécutez un fil et ne pas appeler réellement <cfthread action="join" /> à un moment plus tard, le fil se déroulera, en parallèle à votre fil d'exécution de la page et, si nécessaire fonctionnera beaucoup plus longtemps jusqu'à ce qu'il termine sa tâche.

Il n'y a pas de problème en laissant courir des fils comme ça - ils seront nettoyés que vous attendez une fois qu'ils complètent.

Si vous voulez voir si un thread est en cours d'exécution il suffit d'exécuter cfstat qui liste toutes les demandes en cours d'exécution - les même ont lancé par cfthread.

Vous avez probablement vu les FC docs ici mais encore à ce départ l'enquête de Ben Nadal ici .

Pour ce fil temporisations - vous pouvez spécifier un temps maximum d'attendre les discussions que vous avez créé à l'exécution de la page rejoin, mais autant que je sache il n'y a pas moyen de mettre un délai d'attente (comme un délai d'attente de demande de page) sur le fil que vous avez créé

L'espoir qui aide!

Autres conseils

Une note:

Les documents parlent de « zéro ou plusieurs attributs spécifiques d'application ». J'attention à cela. Cela crée une copie locale de la variable, vous permettant de passer des valeurs qui ne seront pas modifiées.

Alors, je qualifierais

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

sens?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top