본문으로 건너뛰기
버전: 1.x

← 이전 · README로 돌아가기 · 다음 →

파트너, 스토어 또는 로케일별 출력 파일 분리

등록된 피드 하나에서 파트너, 스토어, 로케일 또는 기타 비즈니스 키마다 독립적이고 필터링된 출력 파일을 생성해야 할 때 피드 대상을 사용하십시오.

올바른 분리 방식 선택​

“피드를 파일로 분리”한다는 표현은 서로 다른 두 가지 방식을 뜻할 수 있습니다.

목표사용 방법
파트너, 스토어, 로케일 또는 기타 비즈니스 키마다 필터링된 출력 하나 생성HasFeedTargets 및 FeedTarget
파일마다 고정된 수의 레코드를 담는 연속 파일 생성perFile() 및 선택적으로 maxFiles()
각 출력이 다시 여러 파일로 나뉠 수 있는 별도 출력 생성피드 대상과 perFile() 함께 사용

피드 대상은 애플리케이션의 의미에 따라 데이터를 분리합니다. perFile()은 이미 선택된 하나의 데이터셋을 레코드 수에 따라 분리합니다.

피드 대상의 동작 방식​

feeds 테이블에는 피드 클래스에 대한 행이 하나만 유지됩니다. 각 FeedTarget은 안정적인 키와 작은 매개변수 스냅샷으로 하나의 출력 변형을 설명합니다.

피드 클래스에서 HasFeedTargets를 구현하십시오. 패키지에 포함된 InteractsWithFeedTargets 트레이트는 forTarget()과 target()을 제공하며, 피드 클래스는 탐색과 조회를 구현합니다.

메서드책임
targets(): iterable전체 명령 및 스케줄 실행을 위해 사용 가능한 모든 출력을 지연 방식으로 반환합니다.
findTarget(string $key): ?FeedTarget명시적으로 요청된 --target 키 하나를 해석하거나 null을 반환합니다.
forTarget(FeedTarget $target): static대상이 설정된 피드 복제본을 반환합니다.
target(): FeedTargetbuilder(), filename() 및 기타 실행 훅 안에서 활성 대상을 반환합니다.

FeedTarget::$key는 비어 있지 않고 안정적이며 피드 클래스 안에서 고유해야 하고 외부에 노출해도 안전해야 합니다. 키는 정규화되거나 정제되지 않습니다. 콘솔 출력, 에이전트 JSON, 이벤트 및 오류 컨텍스트에 표시됩니다.

FeedTarget::$parameters는 큐 작업에 저장되는 애플리케이션 소유의 스냅샷입니다. 작고 직렬화 가능하게 유지하고 비밀 정보를 넣지 마십시오. Eloquent 모델 대신 식별자를 저장하십시오.

경고

각 대상은 서로 다른 출력 파일 이름으로 해석되어야 합니다. 그렇지 않으면 나중 대상이 앞선 대상의 출력을 덮어씁니다. 애플리케이션이 형식을 제어하는 경우에만 경로에 대상 키를 사용하십시오.

출력 파일 생성​

targets()가 반환하는 모든 대상을 생성합니다.

php artisan feed:generate products

선택한 대상 하나 이상을 생성합니다.

php artisan feed:generate products --target=42
php artisan feed:generate products --target=42 --target=81

명시적인 키는 targets()를 열거하는 대신 findTarget()을 사용합니다. 중복 키는 처음 나타난 순서를 유지하며 한 번만 처리됩니다. 요청한 모든 키는 생성이 시작되기 전에 해석됩니다.

전체 열거는 스트리밍되며 원자적이지 않습니다. targets()가 일부 값을 반환한 뒤 실패하면 앞선 대상은 이미 생성되었거나 큐에 추가되었을 수 있습니다. 스케줄에 등록된 피드는 모든 대상을 생성하고, 큐 모드는 대상마다 하나의 작업을 전달합니다.

일반적인 레코드 수 기준 분할은 대상마다 따로 적용됩니다. 예를 들어 partners/42.xml은 partners/42-1.xml, partners/42-2.xml 등의 파일이 됩니다.

완전한 예제​

완전한 피드 클래스, 생성 명령 및 예상 출력 경로는 여러 대상에 맞춘 피드 파일 레시피를 따르십시오.

관련 문서​