Siirry sisältöön

Prosessirajoitetut palvelimet

Jaetussa hosting-ympäristössä, kovennetuissa säilöissä ja joillakin PaaS-alustoilla prosessifunktiot poistetaan käytöstä disable_functions avulla. Greph-haku-, uudelleenkirjoitus- ja indeksointitoiminnot suoritetaan PHP-prosessin sisällä (rinnakkaistarkistukset luovat siitä työntekijäkopioita, kun mahdollista), joten ne toimivat myös tällaisissa ympäristöissä.

Mitkä käynnistävät prosesseja

Koodi Funktio Käyttötarkoitus
Greph\Support\ToolResolver shell_exec() Ulkoisten grep-, rg-, sg- (tai npm-) ja gh-binäärien etsiminen PATH-polusta
Greph\Support\CommandRunner proc_open() Näiden binäärien ja Greph-suoritustiedostojen suorittaminen alipro­sesseina
Greph\Parallel\WorkerPool pcntl_fork() Rinnakkaistyöntekijät: -j N / jobs: N

ToolResolver ja CommandRunner palvelevat vain vertailutyökaluja: ominaisuusmatriisin luontia, vertailuajuria ja oraakkelitestiajuria. Greph::search*(), Greph::rewriteAst(), indeksien rakentajat ja neljä suoritustiedostoa eivät koskaan kutsu niitä.

Työntekijäpooli tarkistaa function_exists('pcntl_fork') ennen haarautumista. disable_functions-luettelossa olevaa funktiota ei ole olemassa PHP:n näkökulmasta, joten tällaisella isännällä jokainen osuus suoritetaan prosessin sisällä samalla tuloksella kuin -j 1. Katso Rinnakkaistyöntekijät.

Kun proc_open, shell_exec, exec, system, passthru, popen ja pcntl_fork on poistettu käytöstä, tekstihaku jobs: 4:llä, AST-uudelleenkirjoitus, greph-index build, greph-index ast-cache build ja search sekä rg- ja sg-kääreet toimivat normaalisti.

Prosessittömät apurit

Kun sisällytät vertailuapureita tällaiseen isäntään, luo ne eksplisiittisellä prosessit käytöstä poistavalla käytännöllä:

PHP
use Greph\Support\CommandRunner;
use Greph\Support\ToolResolver;

$toolResolver = ToolResolver::processDisabled();
$commandRunner = CommandRunner::processDisabled();

Nämä instanssit sulkeutuvat turvallisesti: jokainen haku tai komento heittää RuntimeException-poikkeuksen sen sijaan, että yrittäisi käynnistää prosessin.

Text
Process-based tool lookup is disabled; cannot resolve binary: rg
Process execution is disabled; cannot run command: rg --version

Välitä ne kaikkialle, missä hyväksytään ToolResolver tai CommandRunner, esimerkiksi Greph\FeatureMatrix\FeatureMatrixGenerator:n argumenteiksi toolResolver: ja commandRunner:. Generaattori suoritetaan tällöin loppuun käynnistämättä prosessia, mutta se ei voi tuottaa hyödyllistä raporttia: ylätason työkaluihin kohdistuvat kokeet ilmoitetaan tilassa Unavailable ja kokeet, joissa suoritetaan Greph:n omia suoritustiedostoja, tilassa Fail, koska jokainen koe on komento. Luo ominaisuusmatriisi] koneella, jolla prosessit ovat sallittuja.