Alojamientos con restricciones de procesos
El alojamiento compartido, los contenedores reforzados y algunas plataformas PaaS desactivan las funciones de procesos mediante disable_functions. Las operaciones de búsqueda, reescritura e indexación de Greph se ejecutan dentro del proceso de PHP (cuando es posible, los análisis paralelos bifurcan copias de trabajo), así que siguen funcionando en esos entornos.
Qué inicia procesos
| Código | Función | Uso |
|---|---|---|
Greph\Support\ToolResolver |
shell_exec() |
Localizar los binarios externos grep, rg, sg (o npm) y gh en PATH |
Greph\Support\CommandRunner |
proc_open() |
Ejecutar esos binarios y los ejecutables de Greph como subprocesos |
Greph\Parallel\WorkerPool |
pcntl_fork() |
Trabajadores paralelos para -j N / jobs: N |
ToolResolver y CommandRunner solo se usan en las herramientas de comparación: el generador de la matriz de funciones, el arnés de pruebas de rendimiento y el arnés de pruebas del oráculo. Greph::search*(), Greph::rewriteAst(), los generadores del índice y los cuatro ejecutables nunca los llaman.
El grupo de trabajadores comprueba function_exists('pcntl_fork') antes de bifurcar. Una función incluida en disable_functions no existe para PHP, así que en un host de ese tipo cada fragmento se ejecuta en el mismo proceso y produce el mismo resultado que -j 1. Consulta Trabajadores paralelos.
Con proc_open, shell_exec, exec, system, passthru, popen y pcntl_fork desactivados, la búsqueda de texto con jobs: 4, la reescritura de AST, greph-index build, greph-index ast-cache build y search, y los envoltorios rg y sg funcionan con normalidad.
Ayudantes sin procesos
Al integrar los ayudantes de comparación en un host de ese tipo, créelos con una política explícita que desactive los procesos:
use Greph\Support\CommandRunner;
use Greph\Support\ToolResolver;
$toolResolver = ToolResolver::processDisabled();
$commandRunner = CommandRunner::processDisabled();
Estas instancias fallan de forma segura: cada consulta o comando lanza un RuntimeException en vez de intentar iniciar un proceso.
Process-based tool lookup is disabled; cannot resolve binary: rg
Process execution is disabled; cannot run command: rg --version
Páselos donde se acepte un ToolResolver o CommandRunner, por ejemplo, en los argumentos toolResolver: y commandRunner: de Greph\FeatureMatrix\FeatureMatrixGenerator. El generador termina sin iniciar un proceso, pero no puede producir un informe útil: las comprobaciones de las herramientas originales se indican como Unavailable y las que ejecutan los propios ejecutables de Greph, como Fail, porque todas las comprobaciones son comandos. Genere la matriz de funciones en una máquina que permita ejecutar procesos.