PHP 7.4 կամ ավելի նոր տարբերակի համար հրամանի արգումենտները և ենթագործընթացի միջավայրը պահեք առանձին՝

$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 և $descriptorSpec գալիս են հավելվածի գոյություն ունեցող ելքի մշակումից։ Ստուգեք ձախողված մեկնարկը, կառավարեք խողովակները և փակեք գործընթացը այդ կենսացիկլով։

array_replace(getenv(), ...) պահպանում է ծնողական միջավայրը՝ փոխարինելով այս երկու արժեքները ենթագործընթացի համար։ Վերանայեք ժառանգված մեծատառ proxy և շրջանցման փոփոխականները, երբ դրանք կարող են փոխել նախատեսված ուղին։

Արգումենտների զանգվածը թույլ չի տալիս shell-ին մեկնաբանել հավատարմագրերի ամպերսանդները, դոլարի նշանները կամ բացատները։ Shell հրամանի մեջ ներկառուցված հաշիվ կրող վերագրում չկա։

Այս օրինակը ընտրում է curl-ը, քանի որ այն աջակցում է ցուցադրված փոփոխականներին։ HTTP proxy ցանկից հասցեն կարող է լրացնել այդ միջավայրի արժեքները հանրային HTTP ուղու համար։ Այլ գործարկվող ֆայլի պետք է իր աջակցվող proxy ինտերֆեյսը. PHP-ի սեփական cURL ընտրանքները չեն կարգավորում այդ արտաքին ծրագիրը։

Առնչվող հոդվածներ