عمليات الإنتاج
لمحة سريعة
قسم بعنوان «لمحة سريعة»هذه الصفحة هي قائمة التحقق لنقل NextPDF إلى الإنتاج وإبقائه فيه. فهي تنتقي من الدليل: يرتبط كل عنصر بالصفحة التي تحمل التفصيل المتعمّق، لتتحقق هنا وتقرأ هناك. أكمِل قائمة التحقق قبل النشر قبل الإصدار الأول. وعُد إلى وتيرة الترقية ونقاط الدخول لفرز الحوادث بوصفهما جزءًا من عمليات اليوم الثاني.
قائمة التحقق قبل النشر
قسم بعنوان «قائمة التحقق قبل النشر»- أكِّد بيئة التشغيل: يتطلّب NextPDF PHP
>=8.4 <9.0. ويرفض Composer أي شيء خارج هذه النافذة. راجع التثبيت. - تحقّق من الامتدادات الستة المطلوبة باستخدام
php -m:ext-mbstring، وext-zlib، وext-intl، وext-gd، وext-curl، وext-openssl. تشرح صفحة التثبيت وظيفة كل واحد منها. - شغّل
vendor/bin/nextpdf doctorلفحص بيئي دفعةً واحدة (إصدار PHP، والامتدادات، وتوفّر الخطوط في تقرير واحد). - حدِّد مسار العرض قبل تحجيم العتاد. لا يحتاج خط الأنابيب داخل العملية
(
writeHtml()) إلى أي خدمة إضافية. أما Artisan وGotenberg وCloudflare فيضيف كلٌّ منها متصفّحًا أو خدمة شبكية يلزم تشغيلها. استخدم اختر مسارك لتقرّر. - إن اخترت جسر عرض، فاقرأ صفحة الأمان والعمليات الخاصة به قبل بدء التشغيل. راجع تحصين سطح محرك العرض.
- احزم عند وقت البناء الخطوط التي تعرضها، وتلك فقط. راجع توفير الخطوط في الإنتاج.
تحجيم الموارد
قسم بعنوان «تحجيم الموارد»حجِّم لأكبر مستند تُنشئه، لا للمتوسط. يبني getPdfData() مستند
Portable Document Format (PDF) بأكمله في الذاكرة ويعيده كسلسلة نصية
واحدة.
- اضبط ذاكرة العامل أو الدالة انطلاقًا من إرشادات تحجيم البيئات بلا خادم: مستند من صفحات قليلة يعمل بأريحية عند 512–1024 MB؛ أما المستندات الغنية بالصور أو ذات الصفحات الكثيرة فتحتاج إلى أكثر.
- اضبط المهل الزمنية فوق زمن البناء في أسوأ الحالات، مع هامش. وانقل المهام المفرطة الحجم إلى طابور غير متزامن يكتب إلى تخزين الكائنات — قسم التحجيم نفسه يعرض النمط.
- امنح العمّال طويلي العمر opcache مع إيقاف التحقق من الطوابع الزمنية.
ويحمل قسم opcache
في وصفة Docker قيم
iniالإنتاجية. - عندما تنجرف الذاكرة أو الإنتاجية بعد الإطلاق، ابدأ من جدول القرار من العَرَض إلى الرافعة.
قواعد سلامة العمّال
قسم بعنوان «قواعد سلامة العمّال»الكائن Document وحيد الاستخدام. ابنِه، واكتبه مرة واحدة، ودعه يغادر النطاق؛
وأنشئ نسخة جديدة لكل طلب أو لكل مهمة طابور. لا تشارك سوى السجلّات ذات عمر العملية
— FontRegistry وImageRegistry — بإنشائها مرة واحدة عند إقلاع العامل. يطابق
هذا نموذج «لكل طلب، لكل مهمة» في PHP-FPM، وعمّال الطابور، وخوادم التطبيقات
طويلة التشغيل.
- وصفة تتضمّن تسلسل الإقلاع وإعادة التعيين لكل دورة: عرض دفعي آمن للعامل.
- العقد في إجابة واحدة: هل هو آمن للعامل وآمن للخيوط؟
تحصين سطح محرك العرض
قسم بعنوان «تحصين سطح محرك العرض»عامل HTML بوصفه غير موثوق، خصوصًا أي شيء متأثّر بالمستخدم. تحدّد اختر مسارك الحدّ الفاصل: افتراضيًا، لا يشغّل خط الأنابيب المدمج أي نصوص برمجية ولا يجلب أي موارد بعيدة، بينما يعرض كل جسر عبر متصفّح أو خدمة شبكية. قبل تعريض جسر لحركة مرور الإنتاج، استعرض صفحة الأمان والعمليات الخاصة به:
- أمان Artisan وعملياته — سطح محرك العرض Chrome.
- أمان Gotenberg وعملياته — سطح خدمة Gotenberg.
- أمان Cloudflare وعملياته — سطح النشر على الحافة.
- أتشغّل المحرك بوصفه خدمة؟ أضِف أمان Connect وعملياته.
قابلية المراقبة
قسم بعنوان «قابلية المراقبة»لا يَنشُر NextPDF أي مستهدفات لأهداف مستوى الخدمة (SLO)؛ فاشتقّ مستهدفاتك من مقاييس مدة العرض والذاكرة التي تقيسها أدناه.
زوّد مسار العرض بأدوات القياس قبل أول حادثة، لا بعدها.
- المحرك داخل العملية: راقِب باستخدام OpenTelemetry.
- عمليات نشر NextPDF Connect: وصفة OpenTelemetry لـConnect.
- لكل عملية عرض، سجِّل: زمن الساعة الجدارية، وذروة الذاكرة، وعدد الصفحات، وحجم الخرج، والنتيجة مع فئة استثنائها من مرجع الأخطاء.
- نبّه على الاتجاهات، لا على الإخفاقات وحدها: فأزمنة البناء المتصاعدة، وذروة الذاكرة المتصاعدة، وأعداد المهل المنتهية أو نفاد الذاكرة هي الإشارات الرائدة في مداخل الذاكرة والأداء.
وتيرة الترقية
قسم بعنوان «وتيرة الترقية»- اقرأ سياسة دعم الإصدارات مرة واحدة،
ثم ألزِم إصداراتك بها. فهي تحدّد عقد الإصدار الدلالي، وتسميات الاستقرار، ودورة
حياة الإهمال، ومفردات دورة الحياة (
active، وlts، وmaintenance، وfrozen، وeol) التي يستخدمها هذا الدليل. - أودِع
composer.lockكي يحلّ كل عامل منشور إصدار المحرك نفسه — صفحة التثبيت تنصّ على هذا الانضباط. - راجع سِجل التغييرات قبل كل رفع للإصدار.
نقاط الدخول لفرز الحوادث
قسم بعنوان «نقاط الدخول لفرز الحوادث»في حادثة تخصّ جسر العرض (تعطّل Chrome، أو انقطاع Gotenberg، أو فشل العرض على الحافة)، ابدأ من قسم أنماط الإخفاق الخاص بذلك الجسر في تحصين سطح محرك العرض.
- ابدأ من العَرَض، لا من اسم الصنف، في قاعدة معرفة استكشاف الأخطاء وإصلاحها.
- عيِّن الاستثناء المُلتقَط إلى فئته وعقد سياقه في مرجع الأخطاء.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- تشغيل NextPDF في الإنتاج — مقالة Insider_ حول سبب تصرّف المحرك بهذه الطريقة تحت الحمل.
- ضع تطبيق NextPDF في حاوية — صورة Docker الإنتاجية، من البداية إلى النهاية.
- انشر على بيئة بلا خادم — تفاصيل Lambda وCloud Run وApp Runner.
- عرض آمن للعامل على Connect — قواعد العمر نفسها مطبّقة على الخادم.