前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[PHP] stream_set_blocking非阻塞模式影响fgets fread函数

[PHP] stream_set_blocking非阻塞模式影响fgets fread函数

作者头像
唯一Chat
发布2019-12-10 16:33:42
1K0
发布2019-12-10 16:33:42
举报
文章被收录于专栏:陶士涵的菜地

当设置socket为非阻塞时,fread或者fgets函数会立即返回结果,而不需要等待有输入,测试过程可以使用vscode的debug模式来进行 当不设置这一项时,如果客户端没有输入会一直阻塞在这里等待客户端的输入,当加上这个设置后就不会在这等着了

测试代码

代码语言:javascript
复制
<?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);
} 

客户端连接上后没有输入直接会执行到这一步

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档