Когда тайм-аут в fsockopen недоступен?

Я делаю запрос от локального веб-сервера (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 или дополнительное время ожидания подключения могут быть недоступны.

Однако это все, что касается среды, в которой необязательный таймаут недоступен.

Где я могу найти текущую документацию по этому вопросу?

1 ответ

Это зависит от типа сокета. Для локального сокета Unix тайм-аут не имеет особого смысла, так как все происходит как процесс<-kernel->process. Между ними нет неизвестных сетей. Так что либо это не удастся, либо это удастся. Но время, которое требуется, зависит от нагрузки на сервер.

Другие вопросы по тегам