Pāriet uz saturu

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:

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

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