Ga naar inhoud
getnextpdf.com

Productieoperaties

Deze pagina is de checklist om NextPDF naar productie te brengen en daar te houden. Ze is een selectie uit het handboek: elk item verwijst naar de pagina met de details, zodat je hier verifieert en daar leest. Werk de Checklist vóór uitrol door vóór de eerste release. Kom terug op de Upgradecadans en de Ingangspunten voor incidenttriage als onderdeel van de day-two operations.

  • Bevestig de runtime: NextPDF vereist PHP >=8.4 <9.0. Composer weigert alles buiten dat venster. Zie Installatie.
  • Verifieer de zes vereiste extensies met php -m: ext-mbstring, ext-zlib, ext-intl, ext-gd, ext-curl en ext-openssl. De installatiepagina legt uit wat elk ervan doet.
  • Voer vendor/bin/nextpdf doctor uit voor een eenmalige omgevingscontrole (PHP-versie, extensies en beschikbaarheid van lettertypen in één rapport).
  • Bepaal je renderpad voordat je de hardware dimensioneert. De in-process pipeline (writeHtml()) heeft geen extra service nodig. Artisan, Gotenberg en Cloudflare voegen elk een browser- of netwerkservice toe die je moet beheren. Gebruik Kies je pad om te beslissen.
  • Als je een renderer-bridge hebt gekozen, lees dan de bijbehorende pagina over beveiliging en operatie vóór de livegang. Zie Het renderer-oppervlak verharden.
  • Bundel tijdens de build de lettertypen die je rendert, en alleen die. Zie Lettertypen provisioneren in productie.

Dimensioneer voor het grootste document dat je genereert, niet voor het gemiddelde. getPdfData() bouwt het volledige Portable Document Format (PDF)-document in het geheugen op en geeft het terug als één string.

  • Stel het geheugen van de worker of functie in op basis van de richtlijnen voor serverless dimensionering: een document van enkele pagina’s zit comfortabel op 512–1024 MB; documenten met veel afbeeldingen of veel pagina’s hebben meer nodig.
  • Stel time-outs in boven de bouwtijd van het slechtste geval, met marge. Verplaats te grote taken naar een asynchrone queue die naar object storage schrijft — dezelfde dimensioneringssectie toont het patroon.
  • Geef langlevende workers opcache met timestampvalidatie uitgeschakeld. De opcache-sectie van het Docker-recept bevat de productie-ini-waarden.
  • Wanneer geheugen of doorvoer na de lancering afwijkt, begin dan bij de beslissingstabel symptoom-naar-hefboom.

Een Document is voor eenmalig gebruik. Bouw het, schrijf het één keer en laat het buiten scope raken; maak een nieuwe instantie per request of per queue-job. Deel alleen de registries met proceslevensduur — FontRegistry en ImageRegistry — door ze eenmalig bij het opstarten van de worker aan te maken. Dit sluit aan op het per-request-, per-job-model van PHP-FPM, queue-workers en langdraaiende applicatieservers.

Behandel HTML als niet-vertrouwd, vooral alles wat door gebruikers wordt beïnvloed. Kies je pad benoemt de grens: standaard voert de ingebouwde pipeline geen scripts uit en haalt geen externe resources op, terwijl elke bridge rendert via een browser of een netwerkservice. Voordat je een bridge blootstelt aan productieverkeer, werk je de bijbehorende pagina over beveiliging en operatie door:

NextPDF publiceert geen service-level objective (SLO)-doelen; leid die van jou af uit de render-duur- en geheugenmetrieken die je hieronder meet.

Instrumenteer het renderpad vóór het eerste incident, niet erna.

  • Lees het versie-ondersteuningsbeleid één keer en houd je er vervolgens bij releases aan. Het definieert het contract voor semantische versionering, de stabiliteitslabels, de deprecatie-levenscyclus en het levenscyclusvocabulaire (active, lts, maintenance, frozen, eol) dat dit handboek hanteert.
  • Commit composer.lock zodat elke uitgerolde worker dezelfde engine-versie oplost — de installatiepagina benoemt deze discipline.
  • Bekijk de changelog vóór elke versieverhoging.

Bij een renderer-bridge-incident (een Chrome-crash, een Gotenberg-storing, een edge-renderfout) begin je bij de sectie over faalmodi van die bridge in Het renderer-oppervlak verharden.