2017-11-17 25 views
10

में HTTP/2 का समर्थन करने का तरीका यह पता लगाने के लिए कैसे करें यदि कोई URL HTTP/2 का समर्थन करता है तो PHP में परीक्षण करने का कोई आसान तरीका है? मैंने curl_setopt($curl, CURLOPT_HEADER, true) में HTTP/2 identification in the specs के अनुसार कनेक्शन अपग्रेड या एच 2 की जांच करने का प्रयास किया। ऐसी कई साइटें हैं जहां आप एक यूआरएल जोड़ सकते हैं और यह बताएगा कि साइट HTTP/2 का समर्थन करती है या नहीं। बस सोच रहा है कि वे इसका परीक्षण कैसे कर रहे हैं और अगर PHP में कुछ ऐसा किया जा सकता है। कमांड लाइन पर मैं कुछ कर सकता हूं जैसे $ curl -vso --http2 https://www.example.com/PHP साइट

उत्तर

15

आपके सर्वर और कर्ल की स्थापना दोनों को HTTP/2.0 का समर्थन करने की आवश्यकता है। उसके बाद आप केवल सामान्य कर्ल अनुरोध कर सकते हैं और CURLOPT_HTTP_VERSION पैरामीटर जोड़ सकते हैं जो curl को HTTP/2.0 अनुरोध करने का प्रयास करेगा। इसके बाद आपको यह जांचने के लिए हेडर से अनुरोध करना होगा कि सर्वर वास्तव में HTTP/2.0 का समर्थन करता है या नहीं।

उदाहरण:

if ($response !== false && strpos($response, "HTTP/2.0") === 0) { 
    echo "Server of the URL has HTTP/2.0 support."; // yay! 
} elseif ($response !== false) { 
    echo "Server of the URL has no HTTP/2.0 support."; // nope! 
} else { 
    echo curl_error($ch); // something else happened causing the request to fail 
} 
curl_close($ch); 
:

$url = "https://google.com"; 
$ch = curl_init(); 
curl_setopt_array($ch, [ 
    CURLOPT_URL   => $url, 
    CURLOPT_HEADER   => true, 
    CURLOPT_NOBODY   => true, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2_0, // cURL will attempt to make an HTTP/2.0 request (can downgrade to HTTP/1.1) 
]); 
$response = curl_exec($ch); 

अब आप अगर cURL वास्तव में एक HTTP/2.0 अनुरोध किया की जाँच करने की आवश्यकता होगी

संबंधित मुद्दे