İçeriğe geç
getnextpdf.com

Enterprise sürüm

Output Pipeline — Derinlemesine başvuru

NextPDF\Enterprise\OutputPipeline, birçok Pro işlem hattı manifestosunu tek bir toplu iş olarak yürütür. BatchPipelineOrchestrator, Pro PipelineExecutor’ı toplu koordinasyon ile sarar: toplu iş boyutunda sınırlı kaynak korumacısı, isteğe bağlı genel bir toplu iş zaman aşımı, manifesto başına değişken enjeksiyonu ve toplam muhasebe. İsteğe bağlı bir toplu iş sonu uyumluluk denetimi, tamamlanan her çıktıyı Enterprise uyumluluk ağ geçidi üzerinden yeniden doğrular ve kapalı arızalanır. Her çalıştırma; manifesto başına sonuçları, tamamlanan ve başarısız sayılarını, zamanlamayı ve isteğe bağlı uyumluluk raporunu taşıyan bir BatchPipelineResult döndürür.

Bu yetenek NextPDF Enterprise (nextpdf/enterprise) içinde sunulur ve Enterprise katmanı bir lisans zarfı ile etkinleşir. Bu yetkilendirme olmadan yapılan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans edinin.

KatmanOutput-pipeline yüzeyi
CoreOutput-pipeline yüzeyi yok.
ProTek manifestolu işlem hattı (pro.output.pipeline yeteneği).
EnterpriseToplu düzenleme, toplu iş boyutu sınırı, toplu iş zaman aşımı, uyumluluk devri.

Enterprise toplu yüzeyi, özellik başına ayrı bir yetenek kodu taşımaz; paket sınırı onu kapılar. Pro tek manifestolu yeteneği pro.output.pipeline bir ön koşuldur, kapı değil. Tek başına bir Pro lisansı yalnızca alttaki tek manifestolu işlem hattının kilidini açar, bu toplu yüzeyi değil.

Terminal window
composer require nextpdf/enterprise:^3
SembolParametrelerÖntanımlı davranışDöndürürFırlatır veya şununla arızalanırNotlar
BatchPipelineOrchestrator::__construct()PipelineExecutor $executor, BatchPipelineConfig $config, ?ComplianceGateway $complianceGateway, ComplianceProfile $complianceProfileÖntanımlı yapılandırma; ağ geçidi yok; ComplianceProfile::PdfA4 profiliHiçbir şeyUyumluluk denetimi etkinken bir ağ geçidi enjekte edin; ağ geçidi olmadan, denetlenen her manifesto başarısız olarak raporlanır.
BatchPipelineOrchestrator::executeBatch()list<PipelineManifest> $manifests, array<string, array<string, mixed>> $variablesMap = []Manifestoları gönderim sırasıyla yürütür; değişkenler manifesto ID’sine göre çözülürBatchPipelineResultToplu iş 10,000 manifestoyu aştığında OverflowException; uyumluluk denetimi etkinken ağ geçidi istisnaları (bkz. Uç durumlar)Çözücü Throwable’ları asla kaçmaz; Pro yürütücü bunları başarısız adım sonuçlarına indirger.
BatchPipelineConfig::__construct()int $maxConcurrency = 4, int $timeoutMs = 0, bool $complianceCheckOnComplete = falseEşzamanlılık 4; zaman aşımı yok; uyumluluk denetimi yokHiçbir şeySalt okunur değer nesnesi. timeoutMs = 0, toplu iş zaman aşımını devre dışı bırakır.
BatchPipelineResult::__construct()list<PipelineResult> $results, int $totalManifests, int $completedCount, int $failedCount, float $durationMs, ?array $complianceReport = nullManifesto başına PipelineResult değerleri üzerinde toplamHiçbir şeySalt okunur. Denetim çalışmadıkça complianceReport, null kalır.
BatchPipelineResult::allSucceeded()failedCount === 0 sınamasını yaparboolHiçbir şeySıfır başarısızlığı olan, zaman aşımıyla kesilmiş bir toplu işte true döndürür; bkz. Uç durumlar.
BatchPipelineResult::successRate()completedCount / totalManifestsfloatHiçbir şeyBoş bir toplu iş için 1.0 döndürür.
BatchPipelineResult::hasComplianceReport()complianceReport !== null sınamasını yaparboolHiçbir şey
public function __construct(
private readonly PipelineExecutor $executor,
private readonly BatchPipelineConfig $config = new BatchPipelineConfig(),
private readonly ?ComplianceGateway $complianceGateway = null,
private readonly ComplianceProfile $complianceProfile = ComplianceProfile::PdfA4,
) {}
public function executeBatch(
array $manifests,
array $variablesMap = [],
): BatchPipelineResult
public function __construct(
public int $maxConcurrency = 4,
public int $timeoutMs = 0,
public bool $complianceCheckOnComplete = false,
) {}

executeBatch(), önce toplu iş boyutunu 10,000 manifestoluk bir üst sınıra göre doğrular. Üst sınırın üzerindeki bir toplu iş, herhangi bir manifesto yürütülmeden önce OverflowException fırlatır; hiçbir şey sessizce bozulmaz.

Manifestolar ardından Pro PipelineExecutor aracılığıyla gönderim sırasıyla yürütülür. Her manifesto, $variablesMap içinde kendi ID’sine göre anahtarlanan değişkenler girdisini alır; girdisi olmayan bir manifesto boş bir değişkenler eşlemesi alır. Bir manifesto, PipelineResult durumu Completed olduğunda tamamlanmış sayılır; başka herhangi bir uçtaki durum başarısız sayılır. Çözücü istisnaları kaçmaz: Pro yürütücü her çözücü Throwable’ını başarısız bir adım sonucuna dönüştürür, böylece executeBatch() bir adım hatasında toplu işin ortasında iptal etmek yerine sonuçları her zaman toplar.

timeoutMs sıfırdan büyük olduğunda, her manifesto başlamadan önce geçen süre denetlenir. Bütçe tükendiğinde, kalan manifestolar atlanır: bunlar hiçbir PipelineResult üretmez ve ne tamamlanmış ne de başarısız sayılır. totalManifests her zaman gönderilen sayıyı raporlar.

complianceCheckOnComplete etkinleştirildiğinde, düzenleyici, tamamlanan her manifestonun nihai PDF’ini enjekte edilen ComplianceGateway aracılığıyla yapılandırılmış ComplianceProfile’a göre doğrular. Denetim kapalı arızalanır:

  • Enjekte edilmiş ağ geçidi yok: uyumluluk hiçbir zaman doğrulanmadığından, denetlenen her manifesto başarısız olarak raporlanır.
  • Manifestonun adım çıktılarından çözülebilir bir PDF çıktısı yok: başarısız.
  • Ağ geçidi hiçbir sonuç döndürmez (isteğe bağlı mod yardımcı bileşen kullanılamazlığı): başarısız. Olumlu bir sonucun yokluğu bir geçiş değildir.
  • Ağ geçidi herhangi bir uygunsuzluk raporlar: başarısız.

Nihai PDF, tamamlanan bir manifestonun adım çıktıları, son adım önce olacak şekilde, %PDF başlığıyla başlayan doğrudan bir dize değeri için taranarak çözülür. Adım çıktıları, PDF bayt dizelerini asla alt dizilerin içine yerleştirmez; yalnızca doğrudan çıktı değerleri incelenir. Tamamlanmayan manifestolar denetlenmez, atlanır.

Uyumluluk raporu; profile, checked, passed, failed ve failures anahtarlarına sahip bir dizidir; her başarısızlık girdisi manifestId ve reason taşır. Rapor, BatchPipelineResult::$complianceReport’a eklenir ve hasComplianceReport() aracılığıyla erişilebilir.

Uyumluluk devri, bir yetkilendirme denetimi değil, bir yeniden doğrulama yardımcısıdır. Yalnızca bulguları raporlar.

  • 10,000’den fazla manifesto: herhangi bir yürütme başlamadan önce OverflowException.
  • timeoutMs = 0, toplu iş zaman aşımı yok demektir. Üretimde sonlu bir değer ayarlayın.
  • Zaman aşımı kesmesi: atlanan manifestolar hiçbir sayımda görünmez, bu nedenle completedCount + failedCount, totalManifests’ten az olabilir. allSucceeded() yalnızca failedCount === 0 sınamasını yapar ve kesilmiş bir toplu iş için true döndürebilir. Kesmeyi saptamak için count($result->results) değerini totalManifests ile karşılaştırın.
  • successRate(), boş bir toplu iş için (sıfır manifesto gönderilmiş) 1.0 döndürür.
  • Manifesto ID’leri toplu iş düzeyinde yinelemeden arındırılmaz. Bir ID’yi paylaşan iki manifesto da yürütülür ve aynı değişkenler girdisini çözer.
  • Yapısal manifesto hataları (boş adım listesi, yinelenen adım ID’leri, bilinmeyen bağımlılık, bağımlılık döngüsü, çıktı türü uyuşmazlığı, eksik devam adımı), executeBatch() hiç çağrılmadan önce, manifesto oluşturulurken InvalidArgumentException fırlatır.
  • Uyumluluk denetimi etkinken, ComplianceGateway::validate(), ComplianceSidecarUnavailableException (gerekli modda yardımcı bileşen kullanılamaz) veya InvalidArgumentException (profilin aracı için kayıtlı doğrulayıcı yok) fırlatabilir. Her iki istisna da yürütmeden sonra ancak sonuç oluşturulmadan önce executeBatch()’ten kaçar, bu nedenle manifesto başına sonuçlar çağırana kaybolur. İsteğe bağlı modda ağ geçidi bunun yerine null döndürür ve manifesto bir uyumluluk başarısızlığı olarak kaydedilir.
  • İşlem hattı içi bir uyumluluk devri adımı, hiçbir yukarı akış adım çıktısı tanınabilir PDF baytları içermediğinde başarısız olur; asla sessizce geçmez.
  • Bu modül hiçbir kriptografik işlem gerçekleştirmez; FIPS modu uygulanabilir değildir.

Bu modül için hiçbir standart uygunluğu iddia edilmez; bu bir düzenleme katmanıdır. İsteğe bağlı uyumluluk denetimi, kendi başvurularını taşıyan Enterprise uyumluluk ağ geçidine ve onun harici doğrulayıcılarına erteler. Öntanımlı profil ComplianceProfile::PdfA4’tür; diğer ağ geçidi profilleri başka PDF/A, PDF/UA ve PAdES hedeflerini kapsar.

Bir uyumluluk raporu, seçilen profile göre doğrulayıcı bulgularını belirtir. Bir belgeyi sertifikalandırmaz, düzenleyici yeterliliği garanti etmez veya hukuki tavsiye oluşturmaz. Bir çıktının yükümlülüklerinizi karşılayıp karşılamadığını değerlendirmek sizin sorumluluğunuzdadır.

  • Üretim dağıtımlarında, paralel çalışan sevki ve geri basınç ayrı bir yürütme yardımcı bileşeni tarafından ele alınır. PHP düzenleyicisi, toplu koordinasyon ve uyumluluk devri mantığını sağlar ve doğrudan istek işleyiciler tarafından değil, iş çalışanı tarafından çağrılır.
  • PHP yedek yolu, manifestoları sırayla yürütür. maxConcurrency, yardımcı bileşen güdümlü dağıtımda eşzamanlı çalışan geri çağrılarını sınırlar; bunu PHP çalışan havuzuna göre boyutlandırmak operatörün sorumluluğundadır.
  • İşlem hattı içi uyumluluk devri adım çözücüsü, inspect türü adımlar için kayıtlı bir iç türdür. Toplu iş sonu doğrulamayı bunun için doğrudan işlem hattı adımları oluşturmak yerine BatchPipelineConfig aracılığıyla etkinleştirin.
  • PipelineManifest örneklerini erken oluşturun. Yapısal doğrulamaları yapıcıda çalışır, böylece geçersiz grafikler hızla başarısız olur ve toplu iş bütçesini asla tüketmez.

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