Resursdatori ar procesu ierobežojumiem
Koplietojamā mitināšanā, ierobežotos konteineros un dažās PaaS platformās procesu funkcijas tiek atspējotas, izmantojot disable_functions. Greph meklēšanas, pārrakstīšanas un indeksēšanas darbības tiek izpildītas PHP procesā (paralēlā skenēšanā, ja iespējams, tiek atdalītas darbinieku kopijas), tāpēc šajās vidēs tās turpina darboties.
Kas palaiž procesus
| Kods | Funkcija | Lietojums |
|---|---|---|
Greph\Support\ToolResolver |
shell_exec() |
Ārējo grep, rg, sg (vai npm) un gh bināro failu atrašana sistēmā PATH |
Greph\Support\CommandRunner |
proc_open() |
Šo bināro failu un Greph izpildāmo failu palaišana kā apakšprocesiem |
Greph\Parallel\WorkerPool |
pcntl_fork() |
Paralēlie darbinieki -j N / jobs: N |
ToolResolver un CommandRunner tiek izmantoti tikai salīdzināšanas rīkos: funkciju matricas ģeneratorā, etalonmērījumu vidē un orākula testu vidē. Greph::search*(), Greph::rewriteAst(), indeksu veidotāji un četri izpildāmie faili tos nekad neizsauc.
Darbinieku pūls pirms procesu atdalīšanas pārbauda function_exists('pcntl_fork'). Funkcija, kas norādīta disable_functions, PHP skatījumā nepastāv, tāpēc šādā resursdatorā katrs datu gabals tiek apstrādāts vienā procesā ar tādu pašu rezultātu kā -j 1. Skatiet sadaļu Paralēlie darbinieki.
Ja proc_open, shell_exec, exec, system, passthru, popen un pcntl_fork ir atspējoti, teksta meklēšana ar jobs: 4, AST pārrakstīšana, greph-index build, greph-index ast-cache build un search, kā arī rg un sg apvalki darbojas kā parasti.
Palīgrīki režīmam bez procesiem
Iegultot salīdzināšanas palīgrīkus šādā resursdatorā, izveidojiet tos ar skaidri norādītu politiku bez procesiem:
use Greph\Support\CommandRunner;
use Greph\Support\ToolResolver;
$toolResolver = ToolResolver::processDisabled();
$commandRunner = CommandRunner::processDisabled();
Šīs instances drošības nolūkos pārtrauc darbību: katra meklēšana vai komanda izmet RuntimeException, nevis mēģina palaist procesu.
Process-based tool lookup is disabled; cannot resolve binary: rg
Process execution is disabled; cannot run command: rg --version
Padodiet tās tur, kur tiek pieņemts ToolResolver vai CommandRunner, piemēram, Greph\FeatureMatrix\FeatureMatrixGenerator argumentos toolResolver: un commandRunner:. Ģenerators pabeidz darbu, nepalaižot procesu, taču nevar izveidot noderīgu pārskatu: zondes, kas pārbauda augšupējā līmeņa rīkus, tiek atzīmētas kā Unavailable, bet zondes, kas palaiž pašas Greph izpildāmos failus, — kā Fail, jo katra zonde ir komanda. Ģenerējiet funkciju matricu datorā, kurā procesi ir atļauti.