Issue #3590771 by joshuami: Make pa:check bulk mode safe on large media libraries.
P0 safety changes for the bulk Drush command:
- Process IDs in chunks of 50; reset media storage cache, Drupal static cache, and PHP cycle garbage between chunks so memory does not grow monotonically across a long run.
- Add a consecutive parse-failure circuit breaker (--max-consecutive-failures, default 10) that aborts the run with a clear remediation message instead of hammering an unreachable file backend.
- Add a read/connect timeout (default 30s) to every raw file read in PdfParserService and HeadingStructureCheck via a stream context plus default_socket_timeout, so a slow stream wrapper cannot stall the loop.
- Add a pcntl_alarm-based wall-clock guard (default 60s) around Parser::parseContent() to bound runaway parses on hostile PDFs; falls back to no-op on platforms without pcntl.
Tests cover the circuit-breaker abort, streak reset on success, and the parse-timeout handling path.
Closes #3590771