PHP ચાઇલ્ડ આદેશને પ્રોક્સી પર્યાવરણ પસાર કરવું
એક ડાઉનલોડર માટે proc_open નું અલગ પર્યાવરણ અને આર્ગ્યુમેન્ટ એરે વાપરો, વારસામાં મળેલા મૂલ્યો જાણી જોઈને જાળવી રાખો.
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 વિકલ્પો તે બાહ્ય પ્રોગ્રામને ગોઠવતા નથી.