
# Procesbegrænsede værter

Delt hosting, hærdede containere og nogle PaaS-platforme deaktiverer procesfunktioner via `disable_functions`. Grephs søge-, omskrivnings- og indekseringsoperationer kører i PHP-processen (parallelle scanninger forgrener arbejdskopier af den, når de kan), så de fungerer fortsat dér.

## Hvad starter processer

| Kode | Funktion | Bruges til |
|---|---|---|
| `Greph\Support\ToolResolver` | `shell_exec()` | At finde de eksterne `grep`-, `rg`-, `sg`- (eller `npm`-) og `gh`-binærfiler på `PATH` |
| `Greph\Support\CommandRunner` | `proc_open()` | At køre disse binærfiler og Greph-eksekverbare filer som underprocesser |
| `Greph\Parallel\WorkerPool` | `pcntl_fork()` | Parallelle arbejdere til `-j N` / `jobs: N` |

`ToolResolver` og `CommandRunner` bruges kun af sammenligningsværktøjerne: generatoren til funktionsmatrixen, benchmarkværktøjet og oracle-testværktøjet. `Greph::search*()`, `Greph::rewriteAst()`, indeksbyggerne og de fire eksekverbare filer kalder dem aldrig.

Arbejderpuljen kontrollerer `function_exists('pcntl_fork')`, før den forgrener processen. En funktion, der er angivet i `disable_functions`, findes ikke set fra PHPs perspektiv, så på en sådan vært kører hver del i processen med samme resultat som `-j 1`. Se [Parallelle arbejdere](https://greph.inline0.dev/da/docs/advanced/parallel).

Når `proc_open`, `shell_exec`, `exec`, `system`, `passthru`, `popen` og `pcntl_fork` alle er deaktiveret, fungerer tekstsøgning med `jobs: 4`, AST-omskrivning, `greph-index build`, `greph-index ast-cache build` og `search` samt wrapperne `rg` og `sg` stadig normalt.

## Hjælpefunktioner uden procesadgang

Når du indlejrer sammenligningshjælperne på en sådan vært, skal du oprette dem med en udtrykkelig politik uden procesadgang:

```php
use Greph\Support\CommandRunner;
use Greph\Support\ToolResolver;

$toolResolver = ToolResolver::processDisabled();
$commandRunner = CommandRunner::processDisabled();
```

Disse instanser fejler lukket: hvert opslag eller hver kommando udløser en `RuntimeException` i stedet for at forsøge at starte en proces.

```text
Process-based tool lookup is disabled; cannot resolve binary: rg
Process execution is disabled; cannot run command: rg --version
```

Videregiv dem, hvor der accepteres en `ToolResolver` eller `CommandRunner`, for eksempel argumenterne `toolResolver:` og `commandRunner:` for `Greph\FeatureMatrix\FeatureMatrixGenerator`. Generatoren fuldføres derefter uden at starte en proces, men kan ikke producere en brugbar rapport: sonder mod de opstrøms værktøjer rapporteres som `Unavailable`, og sonder, der kører Grephs egne eksekverbare filer, som `Fail`, fordi hver sonde er en kommando. Generér [funktionsmatrixen](https://greph.inline0.dev/da/docs/advanced/feature-matrix) på en maskine, der tillader processer.
