일괄 요청이있는 페이지가 닫히면 일괄 처리가 중지됩니까?
예, 중지됩니다.
동일한 URL을 다시 열면 다시 시작됩니까? 마이그레이션 모듈이 계속 진행되지만 대기열을 사용하고 있습니까?
Dinesh가 말했듯이 구현에 달려 있습니다.
drush를 사용하여 마이그레이션을 실행해야합니다.
Drush는 커맨드 라인에서 실행되며 시간 제한이 없습니다 (특히 PHP의 max_execution_time은 적용되지 않습니다). 따라서 drush를 통해 실행되는 마이그레이션 프로세스를 시작하면 시작되고 완료 될 때까지 계속 실행됩니다.
웹 인터페이스를 통해 프로세스를 실행할 때 PHP max_execution_time (일반적으로 30 초 이상)가 적용됩니다. 따라서 장기 실행 프로세스의 경우 여러 요청에서 프로세스를 분리하는 Batch API를 사용해야합니다. 따라서 마이그레이션 프로세스가 시작되고 25 초 정도 실행 된 후 Batch API가 중지하고 마이그레이션 프로세스가 다시 시작되는 새로운 페이지 요청을 실행하도록합니다 (인피니티).
그렇다면 Drush가 더 나은 이유는 무엇입니까?
더 빠릅니다
Batch API는 페이지 요청을 종료하고 다시 호출하고 마이그레이션 프로세스가 필요한 모든 생성자를 다시 실행해야하며 데이터베이스 연결을 다시 설정하고 쿼리를 다시 실행하는 등 많은 오버 헤드를 발생시킵니다. 그리고 부분 가져 오기의 경우 선택해야합니다. 처음 500 개의 소스 레코드를 가져온 경우 501 번째 레코드를 찾아야합니다. 소스 형식과 그 구성 방식에 따라 확장 가능하거나 확장되지 않을 수 있습니다. SQL 소스와 함께 최고 사용 표시 점을 사용하는 경우 쿼리 자체가 이전 레코드를 제거하고 중단 한 지점에서 바로 시작할 수 있습니다. 그렇지 않은 경우 마이그레이션은 소스 데이터를 스크롤하여 가져 오지 않은 첫 번째 레코드를 찾습니다. 예를 들어 큰 XML 파일을 소스로 사용하면
더 안정적입니다
브라우저를 통해 마이그레이션을 실행하면 데스크탑 및 로컬 인터넷 연결이 실패 지점으로 추가됩니다. Batch API가 다음 페이지 요청으로 이동할 때 네트워크 결함, 브라우저 충돌, 실수로 잘못된 탭 또는 창을 닫으면 마이그레이션이 중단 될 수 있습니다. 돌진 상태에서 실행하면 움직이는 부품이 줄어 듭니다. 데스크탑과 로컬 인터넷 연결을 제거합니다.
더 도움이됩니다
Drush에서 실행할 때 문제가 발생하면 유용한 오류 메시지가 표시됩니다. Batch API를 사용하는 데 실패하는 경우가 많으며 "AJAX HTTP 요청이 비정상적으로 종료되었습니다. 디버깅 정보는 다음과 같습니다. 경로 : / batch? id = 901 & op = do StatusText : ResponseText : ReadyState : 4"입니다.
이에 대한 자세한 내용은 여기를 참조하십시오 .
브라우저 창을 닫아도 배치를 실행하려면 백그라운드 프로세스 모듈을 고려하십시오 . 트릭을 수행 하는 하위 모듈 백그라운드 배치 가 있습니다.
이 모듈은 기존 Batch API를 대신하여 백그라운드 프로세스에서 배치 작업을 실행합니다. 즉, 배치 페이지를 떠나도 작업이 계속되고 나중에 진행률 표시기로 돌아갈 수 있습니다.