Liigu sisu juurde

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:

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

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