Vícevláknové zpracování v Aspose.Slides pro PHP přes Java

Úvod

Ačkoli je paralelní práce s prezentacemi možná (kromě parsování/načítání/klonování) a většinou vše probíhá dobře, existuje malá pravděpodobnost, že při použití knihovny ve více vláknech získáte nesprávné výsledky.

Důrazně doporučujeme, abyste ne používali jedinou instanci Presentation v multithreadovém prostředí, protože to může vést k nepředvídatelným chybám nebo selháním, která se obtížně odhalují.

Není bezpečné načítat, ukládat a/nebo klonovat instanci třídy Presentation ve více vláknech. Takové operace nejsou podporovány. Pokud potřebujete provádět takové úkoly, musíte operace paralelizovat pomocí několika jednovláknových procesů – a každý z těchto procesů by měl používat vlastní instanci prezentace.

Nemáme záruku pro multithreading v PHP při používání rozšíření. Pokud je používáte, dělejte tak na vlastní riziko.

Často kladené otázky

Potřebuji volat nastavení licence v každém vláknu?

Ne. Stačí to provést jednou za proces/aplikaci před spuštěním vláken. Pokud může být nastavení licence voláno současně (například během líné inicializace), synchronizujte toto volání, protože metoda nastavení licence není thread‑safe.

Mohu předávat objekty Presentation nebo Slide mezi vlákny?

Předávání „živých“ objektů prezentace mezi vlákny se nedoporučuje: použijte nezávislé instance pro každé vlákno nebo předem vytvořte samostatné prezentace/kontejnery snímků pro každé vlákno. Tento přístup vychází z obecného doporučení nesdílet jedinou instanci prezentace napříč vlákny.

Je bezpečné paralelizovat export do různých formátů (PDF, HTML, obrázky), pokud má každé vlákno vlastní instanci Presentation?

Ano. S nezávislými instancemi a samostatnými výstupními cestami se tyto úkoly obvykle správně paralelizují; vyhněte se sdíleným objektům prezentace a sdíleným I/O proudům.

Co mám dělat s globálním nastavením fontů (složky, substituce) v multithreadingu?

Inicializujte všechna globální nastavení fontů před spuštěním vláken a během paralelní práce je neměňte. Tím se odstraní závody při přístupu ke sdíleným fontovým prostředkům.