Preskoči na vsebino

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:

PHP
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.

Text
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.