PHP-ში get_headers() მესამე არგუმენტად იღებს stream კონტექსტს. PHP 8-ზე HTTP URL-ისთვის header-ების შემოწმებას შეიძლება ჰქონდეს საკუთარი პროქსის კონფიგურაცია:

$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 stream-ის გარსისთვის. შეცვალეთ მისი დროებითი ჰოსტი და პორტი არაავტორიზებული კანდიდატით HTTP პროქსების სიიდან ამ საჯარო HTTP შემოწმებისთვის. request_fulluri გადასცემს სრულ დანიშნულების URI-ს HTTP მოთხოვნის სტრიქონში, როგორც ბევრი გამტარი პროქსი მოელის. ეს კონტექსტი ეკუთვნის ამ გამოძახებას; ის არ ცვლის ნაგულისხმევ კონტექსტს, რომელსაც სხვა URL წაკითხვები იყენებენ.

ფუნქციის სახელის მიუხედავად, მისი ნაგულისხმევი მოთხოვნის მეთოდია GET. გამოკვეთილი HEAD მეთოდი სერვერს სთხოვს პასუხის მეტამონაცემებს შესაბამისი პასუხის სხეულის გარეშე. სერვერმა შეიძლება უარყოს HEAD ან სხვაგვარად დაამუშაოს, ამიტომ header-ების წარმატებული შემოწმება არ ადასტურებს, რომ შემდგომი ჩამოტვირთვა წარმატებული იქნება.

აქ გადამისამართებების მიყოლა გამორთულია პირველი პასუხის შესამოწმებლად. Location header და გადამისამართების სტატუსი მაშინ სასარგებლო შედეგებია და არა მითითება სხვა URL-ის მოტანაზე. თუ შემოწმებამ უნდა მიჰყვეს გადამისამართებებს, შეგნებულად შეცვალეთ ეს პოლიტიკა და გაითვალისწინეთ დამატებითი პასუხის header-ები.

false არგუმენტი ინახავს ინდექსირებულ header-ების მასივს. გამოიყენეთ true, როდესაც ასოციაციური პარსინგი უფრო სასარგებლოა.

დაკავშირებული სტატიები