Lewati ke konten

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:

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

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