To set timeout in get_headers(), you will need to set stream_context_set_default(), so you can optimize communication cost as you designed.Below is an example to call get_headers() based on stream_context in the system.
<?php $url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/100px-PHP-logo.svg.png'; // Store previous default context $prev = stream_context_get_options(stream_context_get_default()); // Set a small timeout stream_context_set_default([ 'http' => [ 'timeout' => 3, // seconds ] ]); // Do the head request $req = @get_headers($url, true); if (!empty($req)) { // Do some useful stuff here print_r($req); } // Restore previous default context stream_context_set_default($prev); ?>
Original source: https://gist.github.com/vyspiansky/5a1840c728caacc960a7dfab1f9a9f76