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 aliprosesseina |
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ä:
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.
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.