Я делаю запрос от локального веб-сервера (arch linux, php7) к удаленному, который недоступен, потому что эта сеть недоступна. Здесь тайм-аут, по-видимому, игнорируется (т.е. fsockopen
для возврата требуется около 23 секунд вместо заданного времени ожидания 5 секунд).
$timeout = 5;
$start = time();
dbglog($start . ' timeout ' . $timeout); // 1466081215 timeout 5
$socket = fsockopen($server,$port,$errno, $errstr, $timeout);
$end = time();
dbglog($end . ' socket done in ' . ($end-$start) . ' seconds'); // 1466081238 socket done in 23 seconds
официальный доку для fsockopen заявляет следующее:
Заметка:
В зависимости от среды домен Unix или дополнительное время ожидания подключения могут быть недоступны.
Однако это все, что касается среды, в которой необязательный таймаут недоступен.
Где я могу найти текущую документацию по этому вопросу?
Это зависит от типа сокета. Для локального сокета Unix тайм-аут не имеет большого смысла, так как все происходит в процессе<-kernel-> процесс. Между ними нет неизвестных сетей. Так что либо это не удастся, либо это удастся. Но время, которое требуется, зависит от нагрузки на сервер.
Других решений пока нет …