تخطَّ إلى المحتوى
getnextpdf.com

عمليات الإنتاج

هذه الصفحة هي قائمة التحقق لنقل ⁨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⁩ بوصفه غير موثوق، خصوصًا أي شيء متأثّر بالمستخدم. تحدّد اختر مسارك الحدّ الفاصل: افتراضيًا، لا يشغّل خط الأنابيب المدمج أي نصوص برمجية ولا يجلب أي موارد بعيدة، بينما يعرض كل جسر عبر متصفّح أو خدمة شبكية. قبل تعريض جسر لحركة مرور الإنتاج، استعرض صفحة الأمان والعمليات الخاصة به:

لا يَنشُر ⁨NextPDF⁩ أي مستهدفات لأهداف مستوى الخدمة (⁨SLO⁩)؛ فاشتقّ مستهدفاتك من مقاييس مدة العرض والذاكرة التي تقيسها أدناه.

زوّد مسار العرض بأدوات القياس قبل أول حادثة، لا بعدها.

  • اقرأ سياسة دعم الإصدارات مرة واحدة، ثم ألزِم إصداراتك بها. فهي تحدّد عقد الإصدار الدلالي، وتسميات الاستقرار، ودورة حياة الإهمال، ومفردات دورة الحياة (active، وlts، وmaintenance، وfrozen، وeol) التي يستخدمها هذا الدليل.
  • أودِع composer.lock كي يحلّ كل عامل منشور إصدار المحرك نفسه — صفحة التثبيت تنصّ على هذا الانضباط.
  • راجع سِجل التغييرات قبل كل رفع للإصدار.

في حادثة تخصّ جسر العرض (تعطّل ⁨Chrome⁩، أو انقطاع ⁨Gotenberg⁩، أو فشل العرض على الحافة)، ابدأ من قسم أنماط الإخفاق الخاص بذلك الجسر في تحصين سطح محرك العرض.