การทำงานหลายเธรดใน Aspose.Slides สำหรับ PHP ผ่าน Java
บทนำ
ในขณะที่การทำงานแบบขนานกับการนำเสนอเป็นไปได้ (ยกเว้นการพาร์ส/โหลด/โคลน) และส่วนใหญ่ทำงานได้อย่างราบรื่น (ส่วนใหญ่), ก็ยังมีโอกาสเล็กน้อยที่คุณอาจได้รับผลลัพธ์ที่ไม่ถูกต้องเมื่อใช้ไลบรารีในหลายเธรด
เราขอแนะนำอย่างยิ่งว่า ไม่ ควรใช้อินสแตนซ์ของ Presentation เพียงชุดเดียวในสภาพแวดล้อมที่ใช้หลายเธรด เพราะอาจทำให้เกิดข้อผิดพลาดหรือความล้มเหลวที่ไม่คาดคิดและยากต่อการตรวจจับ
มัน ไม่ ปลอดภัยที่จะโหลด, บันทึก, และ/หรือโคลนอินสแตนซ์ของคลาส Presentation ในหลายเธรด การดำเนินการดังกล่าว ไม่ได้ รับการสนับสนุน หากคุณต้องการทำงานเหล่านี้ คุณต้องทำงานแบบขนานโดยใช้หลายกระบวนการแบบ single‑threaded และแต่ละกระบวนการควรใช้อินสแตนซ์การนำเสนอของตนเอง
เราไม่ได้รับประกันการทำงานหลายเธรดใน PHP เมื่อใช้ส่วนขยาย หากคุณใช้ส่วนขยายเหล่านี้ โปรดทำด้วยความเสี่ยงของคุณเอง
คำถามที่พบบ่อย
ฉันต้องเรียกการตั้งค่าไลเซนส์ในทุกเธรดหรือไม่?
ไม่จำเป็น เพียงทำการตั้งค่าเมื่อตำแหน่งกระบวนการ/โดเมนแอปเริ่มต้นก่อนที่เธรดจะเริ่มทำงาน หากการตั้งค่าlicense setupอาจถูกเรียกพร้อมกัน (เช่น ระหว่างการเริ่มต้นแบบ lazy) ให้ซิงโครไนซ์การเรียกนั้นเพราะเมธอดการตั้งค่าไลเซนส์เองไม่ได้ออกแบบให้เป็น thread‑safe
ฉันสามารถส่งผ่านออบเจกต์ Presentation หรือ Slide ระหว่างเธรดได้หรือไม่?
ไม่แนะนำให้ส่งผ่านออบเจกต์การนำเสนอที่ “สด” ระหว่างเธรด: ให้ใช้อินสแตนซ์อิสระต่อเธรดหรือสร้างการนำเสนอ/คอนเทนเนอร์สไลด์แยกกันล่วงหน้าสำหรับแต่ละเธรด วิธีนี้สอดคล้องกับคำแนะนำทั่วไปคือไม่ควรแชร์อินสแตนซ์การนำเสนอเดียวกันข้ามเธรด
การทำงานขนานเพื่อส่งออกเป็นรูปแบบต่าง ๆ (PDF, HTML, images) โดยที่แต่ละเธรดมีอินสแตนซ์ Presentation ของตัวเองปลอดภัยหรือไม่?
ปลอดภัย เมื่อใช้อินสแตนซ์อิสระและเส้นทางเอาต์พุตแยกกัน งานเหล่านี้มักจะทำงานขนานได้อย่างถูกต้อง; อย่าใช้วัตถุการนำเสนอหรือสตรีม I/O ที่แชร์กัน
ฉันควรทำอย่างไรกับการตั้งค่าแบบอักษรระดับโลก (โฟลเดอร์, การทดแทน) ในการทำงานหลายเธรด?
ให้ทำการกำหนดค่า font settings ทั้งหมดก่อนที่จะเริ่มเธรดและห้ามเปลี่ยนแปลงระหว่างการทำงานขนาน นั่นจะขจัดปัญหาการแข่งขันเมื่อเข้าถึงแหล่งข้อมูลแบบอักษรที่แชร์กัน