본문으로 건너뛰기

런타임 서비스 및 계약

이 진입점은 프로그래밍 방식의 생성, 피드 등록, 스케줄러 통합, 스칼라 변환 및 선택적 필드를 지원합니다.

GeneratorService

DragonCode\LaravelFeed\Services\GeneratorService는 하나의 피드를 생성하고 게시합니다.

public function feed(Feed $feed, ?OutputStyle $output = null): GenerationResultData

이 메서드는 모든 부분을 하나의 작업으로 게시하고, 등록 정보의 마지막 활동 시간을 갱신하고, 수명 주기 이벤트를 전달하고, 파일별 레코드 수와 경로를 반환합니다. 스토리지와 출력 경로는 생성을 시작하기 전에 확인합니다. 일반 피드에서는 이 사전 검사에서 발생한 예외(UnsupportedStorageDiskException 포함)를 그대로 전달합니다. HasFeedTargets를 구현하고 설정된 피드에서는 대상 키를 유지할 수 있도록 사전 검사 오류를 FeedGenerationException으로 감쌉니다. 사전 검사가 성공한 뒤 발생한 생성 오류는 모든 피드에서 감싸며, 원래 예외는 이전 예외로 유지합니다.

내부 의존성을 직접 생성하지 말고 Laravel 컨테이너에서 서비스를 해석하십시오.

use App\Feeds\UserFeed;
use DragonCode\LaravelFeed\Services\GeneratorService;

$result = app(GeneratorService::class)->feed(app(UserFeed::class));

foreach ($result->records as $path => $count) {
processFeedResult($path, $count);
}

GeneratorService는 설정된 피드 하나를 생성하며 대상을 열거하지 않습니다. 직접 호출할 때는 먼저 대상을 해석하십시오.

use App\Feeds\PartnerFeed;
use DragonCode\LaravelFeed\Services\GeneratorService;
use RuntimeException;

$feed = app(PartnerFeed::class);
$target = $feed->findTarget('42')
?? throw new RuntimeException('Feed target [42] not found.');

$result = app(GeneratorService::class)->feed(
$feed->forTarget($target),
);

FeedQuery

DragonCode\LaravelFeed\Queries\FeedQuery는 저장된 피드 등록 정보를 관리합니다.

메서드결과
`create(string $class, string $title, Expressionstring $expression = '0 * * * *', bool $isActive = true, array $extra = []): Feed`
find(int $id): Feed등록 정보를 반환하거나 FeedNotFoundException을 발생시킵니다.
all(): Builder모든 등록 정보를 ID순으로 반환합니다.
active(): Builder활성 등록 정보를 ID순으로 반환합니다.
setLastActivity(string $class): void피드 클래스의 last_activity를 갱신합니다.
delete(int $id): voidID로 등록 정보를 소프트 삭제합니다.
deleteByClass(string $class): void삭제된 행을 포함해 해당 클래스의 등록 정보를 영구 삭제합니다.
restore(int $id): void소프트 삭제된 등록 정보를 복원합니다.

$expression에는 dragonmantank/cron-expression이 지원하는 @daily 같은 별칭을 포함한 원시 cron 표현식 문자열 또는 DragonCode\LaravelFeed\Scheduling\Expression을 전달할 수 있습니다. 메서드 체인으로 구성한 값은 검증하고 저장하기 전에 cron 문자열로 변환됩니다. 모델에서 읽을 때는 저장된 문자열이 반환됩니다. 예제는 등록 표현식을 참조하십시오.

일반적인 등록 변경은 생성된 마이그레이션이나 배포 operation을 사용하여 모든 환경에서 재현할 수 있게 하십시오.

ScheduleFeedHelper

DragonCode\LaravelFeed\Helpers\ScheduleFeedHelper::register()는 활성 등록 정보를 Laravel 스케줄러에 추가합니다. 각 등록은 저장된 cron 표현식과 중복 방지 잠금을 사용합니다. 백그라운드 실행과 잠금 TTL은 feeds.schedule 구성에서 가져옵니다.

구성된 피드 테이블이 없으면 등록을 안전하게 건너뜁니다.

Transformer

직렬화 전에 지원되는 값을 변환하려면 DragonCode\LaravelFeed\Contracts\Transformer를 구현하십시오.

public function allow(mixed $value): bool public function transform(mixed $value): string

allow()는 트랜스포머가 값을 처리할지 결정합니다. transform()은 직렬화된 스칼라 표현을 반환합니다. Feed::transformers() 또는 feeds.transformers로 클래스를 추가하십시오.

OptionalData

값이 없을 때 생략할 필드에는 새 DragonCode\LaravelFeed\Data\OptionalData를 반환하십시오. XML, RSS, JSON 및 JSON Lines는 필드를 생략합니다. CSV는 열을 유지하고 빈 필드를 기록합니다.

관련 문서