Gostitelji z omejenimi procesi
Pri deljenem gostovanju, utrjenih vsebnikih in nekaterih platformah PaaS so procesne funkcije onemogočene prek disable_functions. Iskanje, prepisovanje in indeksiranje v Greph potekajo znotraj procesa PHP (vzporedni pregledi po možnosti razvejijo delovne kopije), zato tam še vedno delujejo.
Kaj zažene procese
| Koda | Funkcija | Uporaba |
|---|---|---|
Greph\Support\ToolResolver |
shell_exec() |
Iskanje zunanjih binarnih datotek grep, rg, sg (ali npm) in gh v PATH |
Greph\Support\CommandRunner |
proc_open() |
Zagon teh binarnih datotek in izvedljivih datotek Greph kot podprocesov |
Greph\Parallel\WorkerPool |
pcntl_fork() |
Vzporedni delavci za -j N / jobs: N |
ToolResolver in CommandRunner uporabljajo samo primerjalna orodja: generator matrike funkcij, izvajalnik primerjalnih testov in izvajalnik testov z referenčnim orodjem. Greph::search*(), Greph::rewriteAst(), gradniki indeksov in štiri izvedljive datoteke jih nikoli ne kličejo.
Skupina delavcev pred razvejitvijo preveri function_exists('pcntl_fork'). Funkcija, navedena v disable_functions, za PHP ne obstaja, zato se na takem gostitelju vsi deli obdelajo znotraj procesa, z enakim rezultatom kot pri -j 1. Oglejte si Vzporedni delavci.
Tudi če so proc_open, shell_exec, exec, system, passthru, popen in pcntl_fork onemogočeni, iskanje besedila z jobs: 4, prepis AST, greph-index build, greph-index ast-cache build in search ter ovojniki rg in sg delujejo normalno.
Pripomočki brez procesov
Ko primerjalne pripomočke vdelate v tak gostitelj, jih ustvarite z izrecno politiko onemogočenih procesov:
use Greph\Support\CommandRunner;
use Greph\Support\ToolResolver;
$toolResolver = ToolResolver::processDisabled();
$commandRunner = CommandRunner::processDisabled();
Ti primerki ob napaki prekinejo izvajanje: vsako iskanje ali ukaz sproži RuntimeException, namesto da bi poskusil zagnati proces.
Process-based tool lookup is disabled; cannot resolve binary: rg
Process execution is disabled; cannot run command: rg --version
Posredujte jih povsod, kjer je sprejet ToolResolver ali CommandRunner, na primer kot argumenta toolResolver: in commandRunner: za Greph\FeatureMatrix\FeatureMatrixGenerator. Generator se nato zaključi, ne da bi zagnal proces, vendar ne more ustvariti uporabnega poročila: preverjanja za orodja v zgornjem toku so navedena kot Unavailable, preverjanja, ki izvajajo lastne izvedljive datoteke Greph, pa kot Fail, saj je vsako preverjanje ukaz. Matrico funkcij ustvarite na računalniku, ki dovoljuje procese: matrika funkcij.