Вопрос

Я пытаюсь сделать несколько загруженных изображений через <cffileupload> ярлык. Тег вызывает файл под названием fileupload.cfm обрабатывать / доработать изображение.

Внутри этого изображения я хочу начать нить (вот где я не могу понять резьбу, так что дайте мне знать), так что дайте мне знать), чтобы я мог ответить «изображение загружено» обратно в приложение для загрузки вспышки, но инициирует процесс генерации миниатюр (который может Последние 1 мин или около того, в зависимости от размера файла).

Пока я добавил что-то вроде:

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

Я звоню generateThumbnails метод и используя media id (mid) как ссылка на какой предмет для обработки. Я думаю, что нить умирает, как только мы достигнем конца fileupload.cfm файл.

Не уверен, что это просто то, что я должен попытаться запустить после того, как все файлы загружены?

Мысли? Не уверен, как правильно сделать это работать.

РЕДАКТИРОВАТЬ

После некоторого звона, похоже, у меня была ошибка, не связанная с нитью, которую я зафиксировал, но я должен держать что-нибудь в виду, что «оставив» нити, как это? Должен ли я убить их в какой-то момент? Будут ли они просто очищаться после завершения? Как я могу положить «максимальное время исполнения» на нить?

Это было полезно?

Решение

Если вы запускаете нить и на самом деле не звоните <cfthread action="join" /> В какой-то момент позже нить будет работать, параллельно на вашей теме выполнения страницы, и при необходимости будет работать намного дольше, пока он не завершит его задачу.

Нет проблем, оставляющих темы, по которым это так - они будут очищены, как вы ожидаете, когда они будут завершены.

Если вы хотите посмотреть, запущена ли поток только запуска cfstat который будет перечислять все бегущие запросы - даже те, которые выгнали cfthread.

Вы, наверное, видел документы CF здесь но дальше к этому проверку расследования Бена Надаль здесь.

Что касается Timeouts Threads - вы можете указать максимальное время, чтобы дождаться, чтобы потоки, которые вы создали, чтобы присоединиться к выполнению страницы, но AFAIK Нет способа разместить тайм-аут (например, время ожидания запроса страницы) на резьбу, который вы создали.

Надеюсь, это поможет!

Другие советы

Одна нота:

Документы говорят о «нулевых или более атрибутах, специфичных приложениям». Я бы обратил внимание на это. Это создает локальную копию переменной, что позволяет вам передавать значения, которые не будут изменены.

Итак, я бы позвонил

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

Иметь смысл?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top