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 және айналып өту айнымалыларын қарап шығыңыз, өйткені олар көзделген бағытты өзгертуі мүмкін.

Аргументтер массиві қабыққа тіркелгі деректеріндегі амперсандтарды, доллар белгілерін немесе бос орындарды түсіндіруге жол бермейді. Қабық пәрменіне есептік жазбаны алып жүретін тағайындау енгізілмеген.

Бұл мысал curl-ды таңдайды, себебі ол көрсетілген айнымалыларды қолдайды. HTTP proxy тізіміндегі мекенжай жария HTTP бағыты үшін осы орта мәндерін толтыра алады. Басқа орындалатын файлға өзінің қолдайтын proxy интерфейсі қажет; PHP-ның өз cURL опциялары сол сыртқы бағдарламаны конфигурацияламайды.

Қатысты мақалалар