2010-01-27 2 views
2

드루팔 (drupal) 앱은 컨텐츠를 공개해야합니다. 서비스 모듈을 통해 drupal 백엔드와 통신하는 플래시 wysiwyg 프런트 엔드가 있습니다. 사용자는 이미지/비디오를 업로드하고 플래시에 넣고 조작 할 수 있으며 완료되면 정적 버전을 내 보냅니다. 이 내보내기 프로세스의 일부로 앱에서 미디어 요소 (즉, & 등)를 다시 처리해야하므로 일괄 처리 API를 사용하여 한 번에 요소 만 처리하여 시간 초과 등을 막을 수 있습니다. 이것은 대부분 잘 작동하지만, 나는 batchapi가 작동하는 것처럼 보이는 방식으로 풀려나고 있습니다.서비스와 함께 드루팔 배치 API 사용하기

  1. 플래시 도구는
  2. 가 수출 서비스가이 내보내기를 나타내는 노드를 만들어 수출 서비스를 호출하고 떨어져 NODE_ID에게
  3. 수출 서비스 화재를 반환 내가 뭘하려고 이것이다 백그라운드에서 내보내기가 완료되면 노드의 상태가 변경됩니다.
  4. 한편 플래시 도구는 게시가 완료된 시점을 알기 위해 앱을 폴링하고 사용자를 알리지 않습니다. 내가 깜박 노드 ID를 반환 할 수 있도록 순간에 나를 떨어진지고있는 것 같다 무엇

, 나는 batch_process()를 호출 할 때 일괄 수행하는 리디렉션 일을 트리거하지 않고, 백그라운드에서 일괄 처리를 발사한다 동시에 배치를 시작하십시오.

희망 사항 - 어떤 제안/아이디어입니까? 아니면 내가 잘못하고 있니?

답변

2

100 % (한 동안 배치 API를 사용하지 않은),하지만 난 지금 3 가지 옵션을 참조하십시오 : 현재 워크 플로우를 사용하여 노드를 포함 뭔가 배치 'init_message'을 설정

  1. 을 id :
    • batch_process()으로 전화하여 리디렉션을 수락합니다./
  2. : 당신은 표준 배치 초기화 페이지를 구문 분석해야 할 것 같은 플래시 응용 프로그램은,
  3. 그래도 못생긴 소리 표시된 메시지에서 노드 ID를 추출하기 위해 리디렉션을 수행 한 후 반환 된 페이지를 구문 분석 할 필요가
  4. 폴링을 잊고 플래시 도구는 결과를 기다릴 수 있도록 :
    • 옵션 1과 마찬가지로, 플래시 도구를 일괄 처리에 의해 발행 된 리디렉션을 처리 할 수 ​​있어야합니다 - 당신은 일괄 처리를 시작 했죠 $redirect_url을 플래시 앱에서 필요에 따라 결과를 반환하는 페이지로 설정합니다.
    • 플래시 응용 프로그램은 항상 결과 페이지에 대한 검사의 리디렉션 다음 -가되면, 그냥 그것을 사용
    • 이 있지만, 서비스 모듈에 맞게 얼마나
    • 확실하지 :/
  5. 분할에게 초기화를 워크 플로우에서 :
    1. 플래시 도구는
    2. 수출 서비스 노드를 생성하고 노드 ID가 (더 배치 여기서 시작되지 반환하는 '부트 스트랩'URL에 수출 서비스를 호출!)
    3. 플래시 도구는 노드 ID를 검색하고 수출 서비스가 실제 일괄 처리를 시작하는 노드의 ID를 전달 사용합니다
    4. 노드 ID를 전달하는 '과정'URL에 수출 서비스를 호출 (배치를 만들고 batch_process (호출))
    5. 는 ..., 모든 일을 시작하기 위해 추가 요청의 비용으로,

마지막 버전은 가장 쉬운/가장 깨끗한 하나가 될 것으로 보인다 (폴링 등)을 원래의 흐름에 따라 계속 시나리오에서 사소한 문제가있는 것 같습니다.


편집 :

  • 옵션 3의 변화가하기 전에 drupal_http_request() 자체에 의해 일괄 초기화 페이지를 호출하는 초기 수출 서비스 (노드를 작성하는 일)을 가질 수 있습니다 노드 ID를 플래시 응용 프로그램으로 반환합니다. 두 가지 별도의 호출로 처리를 트리거 할 필요가 없으므로 동일한 기본 아이디어 (초기 요청을 노드를 만드는 작업과 배치를 시작하는 작업으로 나눕니다)가 있지만 플래시 응용 프로그램의 관점에서는 더 많이 포함됩니다.
+0

당신은 내게 약간의 단서를 주었다고 생각합니다.하지만 내 머리를 감싸기 위해 아직 시간이 걸립니다. http://drupal.org/node/638712에서 배치를 비 진보적으로 설정하는 것에 대해 뭔가가 있지만 완전히 이해할 수 있는지 확실하지 않습니다. – Andrew

+0

하지만이 경우 비 프로 그래 시브 배치는 나에게 유용하지 않습니다. hrm. – Andrew

+0

Yup -'batch_process()'와'_batch_process()'에있는 코드를 올바르게 이해하면'$ batch [ 'progressive']'를 FALSE로 설정하면 일괄 적으로 배치가 처리되므로 main 시간 초과를 피하는 이점. –