İçeriğe geç
getnextpdf.com

Pro sürüm

Output Pipeline — Derinlemesine başvuru

Bu sayfa, NextPDF\Pro\OutputPipeline genel yüzeyi için derinlemesine başvurudur. Manifest oluşturma ve doğrulama, topolojik yürütme sırası, yeniden deneme ve zaman aşımı semantiği, devam etme davranışı ve fail-closed pack yeteneği kapısını kapsar. Her genel simge için parametreleri, varsayılanları ve hata modlarını belirtir. İş akışı yönlendirmesi için önce Output Pipeline yetenek sayfasını okuyun.

Bu yetenek NextPDF Pro (nextpdf/pro) ile gönderilir ve bir Pro katmanı lisans zarfıyla etkinleştirilir. Bu yetkiye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve lisans edinin.

Çalıştırıcı ve on adım türünün yedisi, özellik başına bir bayrak taşımaz. Üç adım türü ayrıca bir Pack yeteneği gerektirir:

Adım türüManifest değeriGerekli yetenekPack
Redactredactpack.privacy.redactPrivacy Pack
Extractextractpack.intelligence.extractIntelligence Pack
OCR overlayocr_overlaypack.intelligence.searchable_pdfIntelligence Pack

Kapı, yürütme zamanında, fail-closed olarak, adım çözümleyicisine ulaşmadan önce zorunlu kılınır. Lisanssız kapılı bir adım, SPEC-LIC-001 kodunu ve gerekli yeteneği taşıyan bir Failed adım sonucu verir; çözümleyici hiçbir zaman çağrılmaz. Enjekte edilmiş yetenek çözümleyicisi olmayan bir pipeline, her kapılı adımı reddeder.

Terminal window
composer require nextpdf/pro:^3

nextpdf/premium metapaketi nextpdf/pro kodunu yükler; bu modül NextPDF\Pro\OutputPipeline ad alanı altında yer alır.

SimgeParametrelerVarsayılan davranışDöndürürFırlatır veya şununla başarısız olurNotlar
PipelineExecutor::__constructStepResolverRegistry $registry, ?CapabilityResolverInterface $capabilityResolver = nullYerleşik çözümleyici kayıt defterini ve isteğe bağlı yetki kaynağını bağlarPipelineExecutorBeyan edilmedinull bir yetenek çözümleyicisi, her pack kapılı adımı reddeder
PipelineExecutor::executePipelineManifest $manifest, array $variables = []Adımları topolojik sırada çalıştırır ve sonuçları toplarPipelineResultBeyan edilmedi; çözümleyici hataları Failed adım sonuçları olarak yakalanırBir eşzamansız iş çalışanı içinde çalışacak şekilde tasarlandı
PipelineManifest::__constructstring $id, array $steps, PipelineOptions $options = new PipelineOptions(), ?string $resumeFromStepId = nullAdım grafiğini oluşturma sırasında doğrularPipelineManifestBoş adım listesi, yinelenen adım kimlikleri, bilinmeyen bağımlılıklar, döngüler, çıktı türü uyuşmazlığı veya eksik bir devam adımında InvalidArgumentException; 10 000 adımın üzerinde OverflowExceptionTüm doğrulama, herhangi bir yürütmeden önce tamamlanır
PipelineManifest::topologicalOrderyokAdımları, bağımlılıkları bağımlılardan önce gelecek şekilde sıralarlist<PipelineStep>Beyan edilmediBelirli bir manifest için belirlenimci
PipelineManifest::getStepstring $stepIdAdım kimliğine göre doğrusal arama?PipelineStepBeyan edilmediBilinmeyen bir kimlik için null
PipelineManifest::rootStepsyokBağımlılığı olmayan adımları döndürürlist<PipelineStep>Beyan edilmediKök adımlar önce çalışır
PipelineManifestBuilder::createstring $manifestIdYeni bir oluşturucu başlatırselfBeyan edilmediYapıcı özeldir; tek giriş budur
PipelineManifestBuilder::addStepstring $id, PipelineStepType $type, array $parameters = [], array $dependsOn = [], ?StepOutputType $outputType = nullBir adım ekler; null bir çıktı türü, adım türünden çıkarılırselfBeyan edilmediDoğrulama build() işlemine ertelenir
PipelineManifestBuilder::stopOnErrorbool $stop = trueİlk hatada durmayı ayarlarselfBeyan edilmediVarsayılan true
PipelineManifestBuilder::maxRetriesint $retriesAdım başına yeniden deneme üst sınırını ayarlarselfBeyan edilmediVarsayılan 0 (yeniden deneme yok)
PipelineManifestBuilder::timeoutint $timeoutMsGenel pipeline zaman aşımını ayarlarselfBeyan edilmedi0 zaman aşımını devre dışı bırakır
PipelineManifestBuilder::resumeFromstring $stepIdDevam noktasını ayarlarselfBeyan edilmediAdım, build() zamanında var olmalıdır
PipelineManifestBuilder::buildyokDoğrulanmış manifesti oluştururPipelineManifestPipelineManifest::__construct ile aynı
PipelineOptions::__constructbool $stopOnError = true, int $maxRetries = 0, int $timeoutMs = 0Değişmez yürütme seçenekleriPipelineOptionsBeyan edilmediReadonly değer nesnesi
PipelineStep::__constructstring $id, PipelineStepType $type, array $parameters = [], array $dependsOn = [], StepOutputType $outputType = StepOutputType::PdfDeğişmez adım tanımıPipelineStepBeyan edilmediDoğrudan oluşturma, her tür için çıktı türünü PDF’e varsayar
PipelineStep::isRootyokAdımın bağımlılığı olmadığında trueboolBeyan edilmedi
PipelineStepType (enum)On dize destekli durum: generate, merge, split, inspect, compress, sign, convert, artı kapılı redact, extract, ocr_overlayYerleşik işlem başına bir durum
PipelineStepType::requiresPackyokRedact, Extract ve OcrOverlay için trueboolBeyan edilmediDiğer tüm durumlar false döndürür
PipelineStepType::requiredCapabilityyokKapılı durumları yetenek kodlarına eşler?stringBeyan edilmediKapısız durumlar için null
PipelineStatus (enum)Beş durum: pending, running, completed, failed, cancelledpipeline ve adım sonuçları tarafından paylaşılır
PipelineStatus::isTerminalyokCompleted, Failed ve Cancelled için trueboolBeyan edilmediPending ve Running sonlandırıcı değildir
StepOutputType (enum)Üç durum: pdf, json, metadataOluşturma zamanı kenar doğrulamasını yönlendirir
StepOutputType::forStepTypePipelineStepType $stepTypeBir adım türü için varsayılan çıktı türüselfBeyan edilmediInspect ve Extract JSON’a eşlenir; diğer tüm türler PDF’e eşlenir
StepOutputType::isCompatibleWithself $expectedInputAynı tür eşleşmesi veya bir PDF çıktısı için trueboolBeyan edilmediYardımcı; PDF evrensel giriştir
PipelineContext::__constructstring $manifestId, array $variables = [], ?string $resumeFromStepId = nullÇalıştırma başına bellek içi bağlamPipelineContextBeyan edilmediTTL, sona erme, kalıcılık veya destekleyici depo yok
PipelineContext::setStepResult / ::getStepResultstring $stepId (ayarlamada + StepResult)Bir adım sonucunu kaydeder veya okurvoid / ?StepResultBeyan edilmediHenüz yürütülmemiş bir adım için null
PipelineContext::setStepOutput / ::getStepOutputstring $stepId (ayarlamada + mixed)Bir ara çıktıyı depolar veya okurvoid / mixedBeyan edilmediEksik bir çıktı için null
PipelineContext::hasStepResultstring $stepIdBir adımın zaten yürütülüp yürütülmediğiboolBeyan edilmediDevam denetimlerini destekler
PipelineContext::allStepResultsyokŞimdiye kadar kaydedilen tüm sonuçlararray<string, StepResult>Beyan edilmediAdım kimliğiyle anahtarlanır
PipelineContext::isResumeyokÇalıştırmanın bir adımdan devam edip etmediğiboolBeyan edilmedi
PipelineResult::isSuccessyokYalnızca genel Completed durumu için trueboolBeyan edilmediSonuç, çalıştırıcı tarafından üretilir
PipelineResult::getStepResultstring $stepIdKimliğe göre bir adım sonucu bulur?StepResultBeyan edilmediAtlanan veya bilinmeyen adımlar için null
PipelineResult::failedStepsyokBaşarısız adım sonuçlarını filtrelerlist<StepResult>Beyan edilmediTam başarıda boş liste
StepResult::isSuccessyokYalnızca Completed adım durumu için trueboolBeyan edilmedistepId, type, status, durationMs, error, output taşır
CapabilityResolverInterface::hasCapabilitystring $capabilityBir yetenek kodu için olumlu yetki testiboolFırlatmamalıdırAtlama yoluyla reddet: bilinmeyen, süresi dolmuş veya eşlenmemiş kodlar için false
final class PipelineExecutor
{
public function __construct(
private readonly StepResolverRegistry $registry,
private readonly ?CapabilityResolverInterface $capabilityResolver = null,
)
public function execute(PipelineManifest $manifest, array $variables = []): PipelineResult
}
final class PipelineManifestBuilder
{
public static function create(string $manifestId): self
public function addStep(
string $id,
PipelineStepType $type,
array $parameters = [],
array $dependsOn = [],
?StepOutputType $outputType = null,
): self
public function stopOnError(bool $stop = true): self
public function maxRetries(int $retries): self
public function timeout(int $timeoutMs): self
public function resumeFrom(string $stepId): self
public function build(): PipelineManifest
}
interface CapabilityResolverInterface
{
public function hasCapability(string $capability): bool;
}

Doğrulama, herhangi bir yürütmeden önce PipelineManifest yapıcısında çalışır. Sırayla: adım listesi boş olmamalıdır; adım sayısı 10 000 ile sınırlıdır; bu, düşmanca derin bağımlılık zincirlerini yerel yığın tükenmesi yerine yakalanabilir bir OverflowException’a dönüştürür; adım kimlikleri benzersiz olmalıdır; her dependsOn referansı çözümlenmelidir; bağımlılık grafiği döngüsüz olmalıdır; çıktı türleri uyumlu olmalıdır; bildirilen bir devam adımı var olmalıdır. Her ihlal, belirli bir mesajla InvalidArgumentException fırlatır.

Çıktı türü denetimi, türü PDF çıktısına eşlenen adımlar için geçerlidir: böyle bir adımın her bağımlılığı da PDF çıktısı üretmelidir. JSON üreten adım türlerine (inspect, extract) giden bağımlılık kenarları bu sürümde tür denetiminden geçmez.

execute($manifest, $variables), yeni bir PipelineContext oluşturur, topolojik sırayı hesaplar ve adımları bu sırada ardışık olarak çalıştırır. Bir devam noktası ayarlandığında, adlandırılan adıma ulaşılana kadar önceki adımlar atlanır. Atlanan öncüller yeniden çalıştırılmaz ve çıktıları geri yüklenmez: bağlam, çalıştırma başına ve bellek içidir; bu nedenle atlanan bir öncülün çıktısını okuyan devam eden bir adım null gözlemler.

Genel zaman aşımı, pozitif olduğunda, adımlar arasında, her adım başlamadan önce değerlendirilir. Süre dolduğunda pipeline durumu Failed olur ve kalan adımlar başlamaz. Halihazırda çalışan bir adım, yürütme ortasında asla kesintiye uğratılmaz; bu nedenle tek bir uzun adım bütçeyi aşabilir.

Her adım en fazla maxRetries + 1 deneme alır. Başarılı bir deneme hemen döner. Başarısız herhangi bir deneme — çözümleyiciden gelen bir Failed sonuç veya fırlatılan bir Throwable — deneme kaldığı sürece yeniden denenir; son denemenin sonucu döndürülür. Bir çözümleyici içinde fırlatılan bir Throwable, istisna mesajını taşıyan bir Failed adım sonucuna, mesaj boşsa Unknown error’a indirgenir. execute() bu nedenle her zaman bir PipelineResult döndürür; bir çözümleyici hatasını asla yaymaz.

Kayıtlı çözümleyicisi olmayan bir adım türü, açık bir mesajla bir Failed adım sonucu verir; çalıştırma iptal edilmez. stopOnError true olduğunda (varsayılan), yürütme ilk başarısız adımda durur ve pipeline durumu Failed olur. false olduğunda, yürütme devam eder ve herhangi bir adım başarısız olduysa son durum Failed, aksi hâlde Completed olur.

Herhangi bir çözümleyici gönderiminden önce, her pack kapılı adım (Redact, Extract, OcrOverlay) enjekte edilmiş CapabilityResolverInterface’e karşı denetlenir. Kapı fail-closed’dır: eksik bir çözümleyici, false bir yanıt veya eşlenmemiş bir yetenek kodunun tümü adımı reddeder. Reddetme, hatası SPEC-LIC-001 kodunu, adım türünü ve gerekli yeteneği taşıyan bir Failed adım sonucu üretir. Kapılı bir reddetme hiçbir yeniden deneme denemesi tüketmez ve 0.0 süre bildirir. Çözümleyicinin uygulamaları yalnızca olumlu olarak tutulan bir yetki için true döndürmeli ve fırlatmamalıdır.

PipelineResult; manifest kimliğini, genel durumu, yürütme sırasındaki adım başına sonuçları, milisaniye cinsinden toplam süreyi ve toplam, tamamlanan ve başarısız adım sayılarını bildirir. stepsTotal, devam nedeniyle atlanan veya bir durdurmadan sonra ulaşılamayan adımlar dahil manifestteki her adımı sayar; stepsCompleted ve stepsFailed yalnızca yürütülen adımları sayar.

  • Çalıştırıcı, bir iş çalışanı içinde eşzamansız yürütme için tasarlandı. Satır içi kullanım, çağıranı tüm pipeline süresince engeller.
  • Genel zaman aşımı, adımlar arası bir denetimdir. Tek bir uzun adım bütçeyi aşabilir; hiçbir adım ortasında kesintiye uğratılmaz.
  • Devam etme, yalnızca aynı yürütme içindeki adımları atlar. Hiçbir depodan çıktıları geri yüklemez; önbelleğe alınmış çıktılarla çalıştırmalar arası devam etme uygulanmamıştır.
  • PipelineStep’i doğrudan oluşturmak, her adım türü için çıktı türünü PDF’e varsayar. inspect ve extract adımlarının JSON çıktısı bildirmesi ve kenar doğrulamasının anlamlı kalması için oluşturucuyu kullanın veya çıktı türünü açıkça geçirin.
  • Boş mesajlı bir çözümleyici istisnası, adım sonucunda Unknown error’a normalleştirilir.
  • Kapı tarafından veya eksik bir çözümleyici tarafından üretilen Failed adım sonuçları 0.0 süre bildirir.
  • PipelineResult::getStepResult(), hem bilinmeyen kimlikler hem de devam veya durdurma nedeniyle atlanan adımlar için null döndürür; stepsTotal ile sonuç listesi uzunluğunu karşılaştırarak ayırt edin.
  • Bu modül hiçbir kriptografik işlem gerçekleştirmez ve FIPS’e özgü hiçbir davranış tanımlamaz. sign adımının FIPS duruşu, pipeline tarafından değil, imzalama modülü tarafından yönetilir.

Pipeline, kendi başına hiçbir biçim uygunluğu işi yapmaz. Üretilen her yapının uygunluğu, yürüten adımın arkasındaki modüle — imzalama, optimizasyon, dönüştürme vb. — aittir ve bu modüllerin başvuru sayfalarında belgelenir. Bu sayfa hiçbir harici madde tanımlayıcısı öne sürmez; her ifade ürün kaynağına dayanır. NextPDF hiçbir sertifikasyon iddiasında bulunmaz.

  • Modül kaynağı @since 2.2.0 taşır; bu başvuru, nextpdf/pro 3.1.0 sürümünde gönderilen yüzeyi belgeler.
  • Tüm sınıflar final’dır; manifest, seçenekler, adım ve sonuç türleri readonly değer nesneleridir. Değiştirmek yerine yeni örnekler oluşturun.
  • StepResolverInterface ve StepResolverRegistry @internal’dır. Adım çözümleyicileri yalnızca yerleşiktir; kullanıcı tanımlı özel adım işleyicileri bu sürümde desteklenmez.
  • CapabilityResolverInterface, genel yetki dikişidir. Uygulamalar atlama yoluyla reddetme ilkesine uymalı ve varsayılan olarak izin vermemelidir.
  • Bu PHP çalıştırıcısı, manifest doğrulama ve ardışık yürütme yoludur; production dağıtımları paralel orkestrasyon için sidecar üzerinden gönderim yapabilir. PHP yolundaki yetenek kapısı her iki durumda da bağımsız olarak fail-closed’dır.
  • Dahili mekanizma ayrıntısı, kaynak deposunun dahili belgelerinde kalır ve bu kılavuzun kapsamı dışındadır.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahili ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve bilet önekleri kapsam dışıdır.