Host dengan Proses Terbatas
Hosting bersama, container yang diperketat keamanannya, dan beberapa platform PaaS menonaktifkan fungsi proses melalui disable_functions. Operasi pencarian, penulisan ulang, dan pengindeksan Greph berjalan di dalam proses PHP (pemindaian paralel melakukan fork salinan pekerja jika memungkinkan), sehingga tetap berfungsi di sana.
Proses yang dijalankan
| Kode | Fungsi | Digunakan untuk |
|---|---|---|
Greph\Support\ToolResolver |
shell_exec() |
Menemukan biner eksternal grep, rg, sg (atau npm) dan gh di PATH |
Greph\Support\CommandRunner |
proc_open() |
Menjalankan biner tersebut dan executable Greph sebagai subproses |
Greph\Parallel\WorkerPool |
pcntl_fork() |
Pekerja paralel untuk -j N / jobs: N |
ToolResolver dan CommandRunner hanya digunakan oleh perangkat bantu perbandingan: generator matriks fitur, harness benchmark, dan harness pengujian oracle. Greph::search*(), Greph::rewriteAst(), pembuat indeks, dan keempat executable tidak pernah memanggilnya.
Pool pekerja memeriksa function_exists('pcntl_fork') sebelum melakukan fork. Fungsi yang tercantum di disable_functions dianggap tidak ada oleh PHP, jadi pada host seperti itu setiap potongan berjalan dalam proses yang sama, dengan hasil yang sama seperti -j 1. Lihat Pekerja Paralel.
Dengan proc_open, shell_exec, exec, system, passthru, popen, dan pcntl_fork semuanya dinonaktifkan, pencarian teks dengan jobs: 4, penulisan ulang AST, greph-index build, greph-index ast-cache build, dan search, serta wrapper rg dan sg tetap berjalan normal.
Helper tanpa proses
Saat menyematkan helper perbandingan di host seperti itu, buat helper dengan kebijakan proses dinonaktifkan secara eksplisit:
use Greph\Support\CommandRunner;
use Greph\Support\ToolResolver;
$toolResolver = ToolResolver::processDisabled();
$commandRunner = CommandRunner::processDisabled();
Instans ini gagal dengan aman: setiap pencarian atau perintah memunculkan RuntimeException alih-alih mencoba memulai proses.
Process-based tool lookup is disabled; cannot resolve binary: rg
Process execution is disabled; cannot run command: rg --version
Teruskan ke tempat mana pun yang menerima ToolResolver atau CommandRunner, misalnya argumen toolResolver: dan commandRunner: dari Greph\FeatureMatrix\FeatureMatrixGenerator. Generator akan selesai tanpa memulai proses, tetapi tidak dapat menghasilkan laporan yang berguna: probe terhadap tool upstream dilaporkan sebagai Unavailable dan probe yang menjalankan executable milik Greph sebagai Fail, karena setiap probe merupakan perintah. Buat matriks fitur di mesin yang mengizinkan proses.