PHP-ում get_headers() ընդունում է հոսքի կոնտեքստ որպես երրորդ արգումենտ։ PHP 8-ում HTTP հասցեի համար վերնագրերի ստուգումը կարող է կրել իր սեփական պրոքսի կարգավորումը.

$context = stream_context_create([
    'http' => [
        'proxy' => 'tcp://proxy.example.net:8080',
        'request_fulluri' => true,
        'method' => 'HEAD',
        'follow_location' => 0,
        'timeout' => 10,
    ],
]);

$headers = get_headers('http://example.net/file.zip', false, $context);
if ($headers === false) {
    throw new RuntimeException('Header request failed');
}

Պրոքսին TCP վերջնակետ է HTTP հոսքի փաթաթիչի համար։ Փոխարինեք նրա տեղապահ հոսթը և պորտը չհաստատված թեկնածուով HTTP պրոքսիների ցանկից այս հանրային HTTP ստուգման համար։ request_fulluri ապահովում է նպատակակետի ամբողջական URI-ն HTTP հարցման տողում, ինչպես սպասում են շատ փոխանցող պրոքսիներ։ Այս կոնտեքստը պատկանում է այս կանչին. այն չի փոխում լռելյայն կոնտեքստը, որն օգտագործում են URL-ի այլ ընթերցումները։

Չնայած ֆունկցիայի անվանը՝ նրա լռելյայն հարցման մեթոդը GET է։ Հստակ HEAD մեթոդը սերվերից պահանջում է պատասխանի մետատվյալներ առանց համապատասխան պատասխանի մարմնի։ Սերվերը կարող է մերժել HEAD-ը կամ այլ կերպ վարվել, ուստի վերնագրերի հաջող ստուգումը ապացույց չէ, որ հետագա ներբեռնումը կհաջողվի։

Այստեղ վերահղումներին հետևելը անջատված է առաջին պատասխանը զննելու համար։ Location վերնագիրը և վերահղման կարգավիճակը այդ ժամանակ օգտակար արդյունքներ են, այլ ոչ թե հրահանգ՝ այլ URL բերելու։ Եթե ստուգումը պետք է հետևի վերահղումներին, գիտակցաբար փոխեք այդ քաղաքականությունը և հաշվի առեք լրացուցիչ պատասխանի վերնագրերը։

false արգումենտը պահպանում է ինդեքսավորված վերնագրերի զանգված։ Օգտագործեք true, երբ ասոցիատիվ վերլուծությունն ավելի օգտակար է։

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