stream_socket_accept设置非阻塞,socket_accept设置非阻塞

简介: stream_socket_accept设置非阻塞,socket_accept设置非阻塞

编写socket服务检测是否有新连接加入都要使用stream_socket_accept和socket_accept来获取,但是默认是阻塞的,想要更换为非阻塞并不能用stream_set_blocking($socket, false),因为stream_set_blocking只是设置socket的读写不阻塞,针对的类似于fread/fwrite系列。如果需要对stream_socket_accept设置非阻塞,只需要设置超时时间为0即可。

while (true)
{
    \set_error_handler(function(){});
    $conn = stream_socket_accept($socket,0);
    \restore_error_handler();
    if($conn)
    {
        echo 'a client join this server'.PHP_EOL;
    }
}

stream_socket_accept会输出错误因此加上了屏蔽的代码,此处学习自workerman,感谢workerman的项目

目录
相关文章
|
2月前
|
网络协议 NoSQL Linux
非阻塞socket网络编程之数据收发完整代码示例
非阻塞socket网络编程之数据收发完整代码示例
|
Linux
设置socket接收和发送超时的一种方式
设置socket接收和发送超时的一种方式
618 0
|
数据库
为socket的recv/send设置超时
为socket的recv/send设置超时
241 0
|
算法 网络协议 Unix
setsocketopt设置socket应用
setsocketopt设置socket应用
200 0
|
Web App开发 XML Java
Java 技术篇 - 启动web服务接收浏览器请求并响应实例演示,解决socket响应浏览器显示中文乱码问题,web服务response响应设置浏览器显示字体方法
Java 技术篇 - 启动web服务接收浏览器请求并响应实例演示,解决socket响应浏览器显示中文乱码问题,web服务response响应设置浏览器显示字体方法
149 0
Java 技术篇 - 启动web服务接收浏览器请求并响应实例演示,解决socket响应浏览器显示中文乱码问题,web服务response响应设置浏览器显示字体方法
|
Python
Python 技术篇-全局与当前socket超时连接时间设置方法实例演示,查看socket超时连接时间
Python 技术篇-全局与当前socket超时连接时间设置方法实例演示,查看socket超时连接时间
465 0
Python 技术篇-全局与当前socket超时连接时间设置方法实例演示,查看socket超时连接时间
|
缓存 算法 网络协议
【Java 网络编程】客户端 Socket 配置 ( 超时时间 | 端口复用 | Nagle 算法 | 心跳包机制 | 连接关闭机制 | 缓冲区大小 | 性能权重设置 | 紧急数据设置 )
【Java 网络编程】客户端 Socket 配置 ( 超时时间 | 端口复用 | Nagle 算法 | 心跳包机制 | 连接关闭机制 | 缓冲区大小 | 性能权重设置 | 紧急数据设置 )
948 0
|
算法 Windows 数据安全/隐私保护
setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2.
1017 0