首页 > 解决方案 > PHP:如何在本地套接字上启用 socket_connect 超时?

问题描述

我尝试使用本地套接字与在同一主机上运行的另一个进程通信(Linux 上的 PHP 7.1):

$socket_fd = @socket_create(AF_UNIX, SOCK_SEQPACKET, 0);
socket_set_option($socket_fd, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 1, 'usec' => 0));
socket_set_option($socket_fd, SOL_SOCKET, SO_SNDTIMEO, array('sec' => 1, 'usec' => 0)); 
if (@socket_connect($socket_fd, "/mypath/mysocket.sock"))
{ // so something
}

如您所见,我已经尝试了类似问题的解决方案Make PHP socket_connect timeout 但这似乎不适用于本地套接字。

如果另一端的程序挂起,socket_connect永远不会超时,它只会永远挂起。

有没有办法做到这一点?

标签: php

解决方案


推荐阅读