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(), ...) ਪੇਰੈਂਟ ਐਨਵਾਇਰਨਮੈਂਟ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ ਅਤੇ ਬੱਚੇ ਲਈ ਇਹ ਦੋ ਮੁੱਲ ਬਦਲਦਾ ਹੈ। ਵਿਰਾਸਤੀ ਵੱਡੇ ਅੱਖਰਾਂ ਵਾਲੇ ਪ੍ਰੌਕਸੀ ਅਤੇ ਬਾਈਪਾਸ ਵੇਰੀਏਬਲਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰੋ ਜਦੋਂ ਉਹ ਇੱਛਤ ਮਾਰਗ ਬਦਲ ਸਕਦੇ ਹਨ।

ਆਰਗਿਊਮੈਂਟ ਐਰੇ ਸ਼ੈੱਲ ਨੂੰ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲਾਂ ਦੇ ਐਂਪਰਸੈਂਡ, ਡਾਲਰ ਚਿੰਨ੍ਹ ਜਾਂ ਖਾਲੀ ਥਾਵਾਂ ਦੀ ਵਿਆਖਿਆ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਸ਼ੈੱਲ ਕਮਾਂਡ ਵਿੱਚ ਖਾਤਾ ਲੈ ਕੇ ਚੱਲਣ ਵਾਲਾ ਕੋਈ ਅਸਾਈਨਮੈਂਟ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ।

ਇਹ ਉਦਾਹਰਨ curl ਚੁਣਦੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਦਿਖਾਏ ਵੇਰੀਏਬਲਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ। HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਤੋਂ ਇੱਕ ਪਤਾ ਜਨਤਕ HTTP ਮਾਰਗ ਲਈ ਉਹ ਐਨਵਾਇਰਨਮੈਂਟ ਮੁੱਲ ਭਰ ਸਕਦਾ ਹੈ। ਵੱਖਰੇ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਨੂੰ ਆਪਣਾ ਸਮਰਥਿਤ ਪ੍ਰੌਕਸੀ ਇੰਟਰਫੇਸ ਚਾਹੀਦਾ ਹੈ; PHP ਦੇ ਆਪਣੇ cURL ਵਿਕਲਪ ਉਸ ਬਾਹਰੀ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਕਨਫਿਗਰ ਨਹੀਂ ਕਰਦੇ।

ਸੰਬੰਧਿਤ ਲੇਖ