English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Метод решения проблемы времени ожидания при запросе к удаленному адресу с помощью PHP

Настройка времени ожидания запроса для удаленного адреса php, основное внимание уделяется методам настройки времени ожидания для трёх простых и часто используемых функций: file_get_contents, fopen, curl. В общем случае рекомендуется использовать curl, так как он обладает наилучшей производительностью и наибольшей эффективностью.

1. Настройка времени ожидания запроса file_get_contents

$timeout = array(
'http' => array(
'timeout' => 5 // Установка времени ожидания, единицы измерения - секунды
)
);
$ctx = stream_context_create($timeout);
$text = file_get_contents("https://ru.oldtoolbag.com/",0, $ctx);

2. Настройка времени ожидания запроса fopen

$timeout = array(
'http' => array(
'timeout' => 5 // Установка времени ожидания, единицы измерения - секунды
)
);
$ctx = stream_context_create($timeout);
if ($fp = fopen("https://ru.oldtoolbag.com/", "r", false, $ctx)) {
while( $c = fread($fp, 8192)) {
echo $c;
}
fclose($fp);
}

3. Настройка времени ожидания запроса curl

CURL - это часто используемая библиотека для доступа к интерфейсам протокола HTTP, обладающая высокой производительностью и некоторыми функциями поддержки многопоточности.

curl_setopt($ch, opt) позволяет установить некоторые настройки времени ожидания, включая:

a 、CURLOPT_TIMEOUT - время выполнения cURL, разрешенное в секундах.

b、CURLOPT_TIMEOUT_MS - время выполнения cURL, разрешенное в миллисекундах.

c、 CURLOPT_CONNECTTIMEOUT - время ожидания перед установлением подключения. Если установлено в 0, то ожидание бесконечно.

d、 CURLOPT_CONNECTTIMEOUT_MS - время ожидания подключения, выраженное в миллисекундах. Если установлено в 0, то ожидание бесконечно. e、 CURLOPT_DNS_CACHE_TIMEOUT - время хранения DNS информации в памяти, по умолчанию 120 секунд.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);  // Достаточно установить количество секунд
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, $defined_vars['HTTP_USER_AGENT']);

Вот и все, что я могу предложить вам по решению проблемы установки времени ожидания запроса PHP на удаленный адрес. Надеюсь, это поможет и вы поддержите наш сайт с руководствами!

Основной учебник
Рекомендуем также