Piiratud protsessitoega hostid
Jagatud hostingu, turvalisemaks muudetud konteinerite ja mõne PaaS-platvormi puhul on protsessifunktsioonid funktsiooni disable_functions kaudu keelatud. Greph otsingu-, ümberkirjutus- ja indekseerimistoimingud töötavad protsessis PHP (paralleelsed skannimised käivitavad võimaluse korral selle tööprotsessi koopiad), seega töötavad need ka seal.
Mis käivitab protsesse
| Kood | Funktsioon | Kasutus |
|---|---|---|
Greph\Support\ToolResolver |
shell_exec() |
Välise grep, rg, sg (või npm) ja gh binaarfailide asukoha leidmine PATH-s |
Greph\Support\CommandRunner |
proc_open() |
Nende binaarfailide ja Greph käivitatavate failide käivitamine alamprotsessidena |
Greph\Parallel\WorkerPool |
pcntl_fork() |
Paralleelsed tööprotsessid -j N / jobs: N jaoks |
ToolResolver ja CommandRunner kasutatakse ainult võrdlustööriistades: funktsioonimaatriksi generaatoris, võrdlustestide tööriistas ja võrdlustestide kontrolltööriistas. Greph::search*(), Greph::rewriteAst(), indeksikoostajad ja neli käivitatavat faili ei kutsu neid kunagi.
Tööprotsesside kogum kontrollib enne harunemist function_exists('pcntl_fork') olemasolu. disable_functions loetletud funktsiooni pole PHP seisukohast olemas, seega käivitatakse sellises keskkonnas kõik osad protsessisiseselt ja saadakse sama tulemus nagu -j 1 puhul. Vt Paralleelsed tööprotsessid.
Kui proc_open, shell_exec, exec, system, passthru, popen ja pcntl_fork on kõik keelatud, töötavad tekstiotsing funktsiooniga jobs: 4, AST ümberkirjutus, greph-index build, greph-index ast-cache build ja search ning rg ja sg ümbrisklassid endiselt tavapäraselt.
Protsessideta abifunktsioonid
Kui lisate võrdlusabilised sellisesse keskkonda, looge need selgesõnalise protsessideta poliitikaga:
use Greph\Support\CommandRunner;
use Greph\Support\ToolResolver;
$toolResolver = ToolResolver::processDisabled();
$commandRunner = CommandRunner::processDisabled();
Need eksemplarid ei luba vaikimisi tegevust: iga otsing või käsk viskab RuntimeException, selle asemel et protsessi käivitada.
Process-based tool lookup is disabled; cannot resolve binary: rg
Process execution is disabled; cannot run command: rg --version
Edastage need sinna, kus aktsepteeritakse ToolResolver või CommandRunner, näiteks Greph\FeatureMatrix\FeatureMatrixGenerator argumentidena toolResolver: ja commandRunner:. Seejärel lõpetab generaator töö protsessi käivitamata, kuid ei saa koostada sisukat aruannet: päringuid ülesvoolu tööriistade vastu kajastatakse kui Unavailable ja päringuid, mis käivitavad Greph enda käivitatavaid faile, kui Fail, sest iga päring on käsk. Looge funktsioonimaatriks] masinas, kus protsessid on lubatud.