[PHP] stream_set_blocking非阻塞模式影响fgets fread函数
2023-02-18 15:41:08 时间
当设置socket为非阻塞时,fread或者fgets函数会立即返回结果,而不需要等待有输入,测试过程可以使用vscode的debug模式来进行
当不设置这一项时,如果客户端没有输入会一直阻塞在这里等待客户端的输入,当加上这个设置后就不会在这等着了
测试代码
<?php $main_socket = stream_socket_server("tcp://0.0.0.0:8888", $error_code, $error_msg) or die('create server failed'); while(1) { set_error_handler(function(){}); $new_socket = stream_socket_accept($main_socket, 5, $remote_address); restore_error_handler(); if(!$new_socket) continue; //屏蔽或开启本行代码进行调试 stream_set_blocking($new_socket, 0); $request = fread($new_socket, 8192); var_dump($request); }
客户端连接上后没有输入直接会执行到这一步
相关文章
- 前端开发:6、jQuery类库简介与基本使用
- 前端开发:5、BOM操作、DOM操作、jQuery类库
- 前端开发:3、CSS之边框、盒子模型、浮动、溢出、定位、重叠、display
- 前端开发:2、CSS、表单标签补充说明
- 前端开发:1、概念、HTTP协议、HTML及常用标签
- MySQL数据库:15、视图、触发器、存储过程、函数、流程控制、慢查询优化、索引测试
- MySQL数据库:13、索引
- MySQL数据库:14、事务
- MySQL数据库:12、PyMySQL模块
- MySQL数据库:11、多表查询练习题
- MySQL数据库:10、Navicat可视化软件
- MySQL数据库:9、小知识点补充
- MySQL数据库:8、多表查询的方法与思路
- MySQL数据库:7、SQL常用查询语句
- MySQL数据库:6、约束的概述及语法
- MySQL数据库:5、创建表的完整语法、MySQL数据类型
- MySQL数据库:4、字符编码配置、数据存储引擎
- MySQL数据库:3、SQL与NoSQL、数据库重要概念、SQL的基本语句
- MySQL数据库:2、MySQL的下载与安装、基本使用、系统服务制作
- MySQL数据库:1、数据库发展史及常用数据库的介绍