PHP Socket定义了等待的最长时间

时间:2009-06-11 21:16:38

标签: php sockets

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, $ip_server , $port);

socket_sendto($socket, $ascii_egyben_kimenet, strlen($ascii_egyben_kimenet), 0, $ip_plc , $port);
$valasz_kimenet=socket_read($socket, 256);

因为socket_read服务器正在等待答案... 我如何定义等待的最长时间?

3 个答案:

答案 0 :(得分:2)

使用函数socket_set_timeout()执行此操作。 1/2秒超时的示例:

socket_set_timeout($socket, 0, 500);

您可以通过setting the socket to non-blocking mode检查某人是否正在尝试连接而不会阻止:

socket_set_blocking($socket, 0);

答案 1 :(得分:1)

我不知道socket_set_timeout()是否出现了同样的问题,但是在严重使用stream_set_timeout()的情况下,我发现PHP将时间限制设置为我指定的两倍。所以,如果我告诉它60秒,那实际上是在我停止收听之前的两分钟。我实际上必须花费所需的秒数并乘以500000以获得在stream_set_timeout()中使用的值。

答案 2 :(得分:0)

或者

socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>10, 'usec'=>0));