문제

큰 문서 컬렉션을 검색하는 함수를 호출하는 Flex 응용 프로그램이 있습니다. 검색어에 따라 사용자는 Flex의 요청을 중지 할 수 있습니다.

Flex 응용 프로그램이 요청을 기대하는 것을 중지 할뿐만 아니라 CFC 요청을 중지하고 싶습니다. 이게 가능해? 이 작업을 수행하기위한 최선의 방법은 무엇입니까?

도움이 되었습니까?

해결책

Ben Doom의 답변에 추가하기 위해, 나는 이것이 달성 될 수있는 방법의 예제 코드를 포함하고 있습니다. 아래 코드를 구성하고 호출하는 여러 가지 접근 방식과 이름이 있지만 도움이되기를 바랍니다.

요청 시작시 어느 시점에서 공유 범위로 프로세스에 대한 정보를 저장하고 ID를 클라이언트에게 반환합니다. 다음은 페이지 또는 원격 요청에 사용할 수있는 예제 기능입니다.

<cffunction name="createProcess" output="false">
  <cfset var id = createUUID()>
  <cfset application.processInfo[id] = {
    progress = 0,
    kill = false
  }>
  <cfreturn id />
</cffunction>

그런 다음 클라이언트는 서버 폴링 서버를 통해 진행 상황을 확인하거나 킬 프로세스에 대한 요청을 제출할 수 있습니다.

<cffunction name="getProcessProgress" output="false">
  <cfargument name="processID" required="true">
  <cfreturn application.processInfo[arguments.processID].progress />
</cffunction>

<cffunction name="killProcess" output="false">
  <cfargument name="processID" required="true">
  <cfset application.processInfo[arguments.processID].kill = true />
</cffunction>

문제의 실제 서버 측 프로세스는 루프 중에 함수를 누르면 처리를 중단하고 적절한 작업을 정리 해야하는지 확인할 수 있습니다.

<cffunction name="shouldKillProcess" output="false">
  <cfargument name="processID" required="true">
  <cfreturn application.processInfo[arguments.processID].kill />
</cffunction>

다른 팁

나는 거기에 있다고 생각하지 않습니다 직접 페이지 호출을 외부로 중지하는 방법. 문서에 따르면 스레드 자체만이 주어진 스레드를 중단 할 수 있습니다.

그러나 주어진 스레드에 대한 플래그를 공유 범위로 설정할 수 있습니다.

배경 처리를 시작하는 메소드를 호출한다고 가정 해 봅시다. 고유 한 스레드 ID를 생성하고 발신자에게 반환합니다. 스레드는 (예를 들어) 깃발을 찾아 멈추도록 지시하는 플래그를 찾습니다. 백그라운드 프로세스의 각 내장을 확인합니다. 깃발이 던져지는 시점에서는 중단 될 수 있습니다.

깃발을 던지려면 낙태가 될 스레드의 이름을 가져 오는 중단 메소드를 추가하고, 제 3자가 실을 죽이기 시작할 수 없도록 충분한 보안과 함께 낙태해야합니다.

ColdFusion 8을 사용하는 경우 <cfthread> 꼬리표. 자체 스레드에서 검색 프로세스를 스폰 한 다음 원격 호출을 사용하여 필요에 따라 검색 스레드를 종료 할 수 있습니다.

프로그래밍 방식으로 요청을 종료 할 수 있습니다 <cfabort/> 또는 <cfsetting requesttimeout="0"/> - 그러나 그것은 CF 서버 측면에 있습니다. 나는 당신이 요구하는 것입니까?

원격으로 결말 ... 음, FusionReactor가 있다면 ~할 것 같다 Flex를 사용하여 연락하여 요청을 방해 할 수 있습니다. (FusionReactor 내에서 요청을 종료하려고 시도 할 수는 있지만 Flex가 실제로 FR을 중지 해달라고 요청할 수 있는지 여부는 FR 메일 링리스트에서이를 요청해야합니다.)


아마도 대안적인 솔루션은 여러 요청에 따라 검색을 시도하고 설계하는 것이지만, 검색이 정확히 검색하는 것에 달려있는 방법은 얼마나 가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top