Aspose.Slides for PHP via Java におけるマルチスレッド

イントロダクション

プレゼンテーションの並列処理は(解析/ロード/クローンを除いて)可能で、ほとんどの場合うまくいきますが、ライブラリを複数のスレッドで使用すると、結果が正しくない可能性がわずかにあります。

マルチスレッド環境で単一のPresentationインスタンスを使用しないことを強く推奨します。これにより、検出が困難な予測不可能なエラーや失敗が発生する可能性があります。

複数のスレッドでPresentationクラスのインスタンスをロード、保存、またはクローンすることは安全ではありません。このような操作はサポートされていません。このようなタスクを実行する必要がある場合は、複数のシングルスレッドプロセスを使用して操作を並列化する必要があり、各プロセスは独自のプレゼンテーションインスタンスを使用すべきです。

拡張機能を使用する場合のPHPでのマルチスレッドは保証されていません。使用する場合は自己責任で行ってください。

FAQ

ライセンス設定を各スレッドで呼び出す必要がありますか?

いいえ。スレッドが開始する前に、プロセス/アプリ ドメインごとに一度実行すれば十分です。もしlicense setupが同時に呼び出される可能性がある場合(例:遅延初期化時)、その呼び出しを同期させてください。ライセンス設定メソッド自体はスレッドセーフではありません。

PresentationまたはSlideオブジェクトをスレッド間で渡すことはできますか?

「ライブ」なプレゼンテーションオブジェクトをスレッド間で渡すことは推奨されません。スレッドごとに独立したインスタンスを使用するか、各スレッド用に別々のプレゼンテーション/スライドコンテナを事前に作成してください。この方法は、単一のプレゼンテーションインスタンスをスレッド間で共有しないという一般的な推奨に沿ったものです。

各スレッドが独自のPresentationインスタンスを持つ場合、PDF、HTML、画像など異なる形式へのエクスポートを並列化しても安全ですか?

はい。独立したインスタンスと別々の出力パスを使用すれば、通常この種のタスクは正しく並列化できます。プレゼンテーションオブジェクトやI/Oストリームを共有しないようにしてください。

マルチスレッド環境でのグローバルフォント設定(フォルダー、置換など)はどうすればよいですか?

スレッドを開始する前にすべてのグローバルfont settingsを初期化し、並列作業中に変更しないでください。これにより、共有フォントリソースへのアクセス時の競合が防止されます。