Kwa PHP 7.4 au zaidi, tenga hoja za amri na mazingira ya mchakato mtoto:

$environment = array_replace(getenv(), [
    'http_proxy' => 'http://proxy.example:8080',
    'https_proxy' => 'http://proxy.example:8080',
]);

$process = proc_open(
    ['/usr/bin/curl', '--fail', '--max-time', '30',
     '--output', $outputFile, 'https://downloads.example/data.csv'],
    $descriptorSpec,
    $pipes,
    null,
    $environment
);

$outputFile na $descriptorSpec vinatoka kwenye ushughulikiaji wa matokeo uliopo wa programu. Angalia kama uzinduzi umeshindikana, dhibiti mabomba na funga mchakato kupitia mzunguko huo wa maisha.

array_replace(getenv(), ...) huhifadhi mazingira ya mzazi huku ikibadilisha thamani hizi mbili kwa mtoto. Pitia vigeu vilivyorithiwa vya proksi na vya kupita kwa herufi kubwa wakati vinaweza kubadilisha njia iliyokusudiwa.

Safu ya hoja huzuia shell kufasiri ampersandi, alama za dola au nafasi za vitambulisho. Hakuna ugawaji unaobeba akaunti uliopachikwa katika amri ya shell.

Mfano huu huchagua curl kwa sababu inasaidia vigeu vilivyoonyeshwa. Anwani kutoka orodha ya proksi za HTTP inaweza kujaza thamani hizo za mazingira kwa njia ya umma ya HTTP. Kifaa kingine cha utekelezaji kinahitaji kiolesura chake cha proksi kinachosaidiwa; chaguo za cURL za PHP zenyewe haziweki mpango huo wa nje.

Makala zinazohusiana