PHP 7.4 yoki undan yangiroq uchun buyruq argumentlari va bola jarayon muhitini alohida saqlang:

$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 va $descriptorSpec ilovaning mavjud chiqishni qayta ishlash qismidan olinadi. Muvaffaqiyatsiz ishga tushishni tekshiring, quvurlarni boshqaring va jarayonni shu hayot tsikli orqali yoping.

array_replace(getenv(), ...) ota muhitini saqlab, bu ikki qiymatni bola uchun almashtiradi. Meros qolgan katta harfli proksi va chetlab o'tish o'zgaruvchilarini, ular mo'ljallangan yo'nalishni o'zgartirishi mumkin bo'lganda ko'rib chiqing.

Argumentlar massivi qobiqning hisob ma'lumotlaridagi ampersandlar, dollar belgilari yoki bo'shliqlarni talqin qilishini oldini oladi. Qobiq buyrug'ida hisobni tashuvchi tayinlash joylashtirilmagan.

Bu misol curl'ni tanlaydi, chunki u ko'rsatilgan o'zgaruvchilarni qo'llab-quvvatlaydi. HTTP proksi ro'yxatidagi manzil ommaviy HTTP yo'nalishi uchun bu muhit qiymatlarini to'ldirishi mumkin. Boshqa bajariladigan fayl o'zining qo'llab-quvvatlanadigan proksi interfeysiga muhtoj; PHP'ning o'z cURL parametrlari bu tashqi dasturni sozlamaydi.

O'xshash maqolalar