- Автор темы
- #1
Здраствуйте, наткнулся на такую проблему как ограничить, задать тайм аут на время ожидания ответа от fsockopen.
Опишу подробнее. Есть екрипт который поднимает сокет соединение через ПРОКСИ.
Вот упрощенный вариант его.
И вот тут возникает проблема если не удалось подключиться к прокси-серверу то срабатывает таймаут в 15 сек. Но если к прокси-серверу подключение нормальное а у этого прокси-сервера самого проблемы с подключением к интернету, то выходит что скрипт начинает ждать какой-то невменяемый таймаут в несколько минут пока сам прокси-сервер не скажет “не могу”.
Попытался задать stream_set_timeout($sock,15); но это нефика не помогает он продолжает честно ожидать пока прокси-сервер не скажет отбой.
Вот вопрос как принудительно ограничить время ожидания. Если прокси-сервер такой оптимист что может ожидать несколько минут то это не приемлемо для скрипта. Надо чтоб скрипт через секунд 15 перестал ждать ответа от прокси-сервер и забил на него.
Не кто не сталкивался с такой проблемой, как её можно решить?
Заранее спасибо.
Опишу подробнее. Есть екрипт который поднимает сокет соединение через ПРОКСИ.
Вот упрощенный вариант его.
Код:
$sock = fsockopen($proxy, $port, $errno, $errstr, 15);
if ($sock) {
fputs($sock,"GET [url]http://www.google.ru/[/url] HTTP/1.0\r\nHost: [url]www.google.ru\r\nCache-Control:[/url] no-store \r\n\r\n");
if (feof($sock)) {
die(‘error’);
} else {
stream_set_timeout($sock,15);
$tmp='';
while (!feof($sock)) {
$tmp .= fgets($sock, 512);
}
die($tmp);
}
@fclose($sock);
}
Попытался задать stream_set_timeout($sock,15); но это нефика не помогает он продолжает честно ожидать пока прокси-сервер не скажет отбой.
Вот вопрос как принудительно ограничить время ожидания. Если прокси-сервер такой оптимист что может ожидать несколько минут то это не приемлемо для скрипта. Надо чтоб скрипт через секунд 15 перестал ждать ответа от прокси-сервер и забил на него.
Не кто не сталкивался с такой проблемой, как её можно решить?
Заранее спасибо.