2016-06-16 12 views
0

Я делаю запрос с локального веб-сервера (arch linux, php7) на удаленный, который недоступен, потому что эта сеть недоступна. Здесь тайм-аут, как представляется, игнорируется (то есть fsockopen занимает около 23 секунд для возврата вместо заданного таймаута 5 секунд).Когда тайм-аут в fsockopen недоступен?

$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 

В official doku for fsockopen гласит следующее:

Примечание:

В зависимости от окружения, домен Unix или необязательный таймаут соединения могут быть недоступны.

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

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

ответ

0

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

+0

Это единственное обстоятельство? Я делаю запрос с локального веб-сервера (arch linux, php7) на удаленный, который недоступен, потому что эта сеть недоступна. Здесь тайм-аут также игнорируется. (возможно, я должен исправить вопрос с этой информацией) –

+0

И поделитесь некоторым кодом. Минимальный рабочий пример, содержащий вашу проблему –