专栏首页陶士涵的菜地[PHP] stream_set_blocking非阻塞模式影响fgets fread函数

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

当设置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);
} 

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [javaSE] 网络编程(浏览器客户端-自定义服务端)

    获取PrintWriter对象,new出来,构造参数:OutputSream对象,true自动刷新

    陶士涵
  • [PHP] PHP多进程处理tcp连接

    陶士涵
  • [PHP] PHP请求Socket接口测试

    使用php读取socket接口的数据,通过php传递请求方法和请求参数,得到返回结果

    陶士涵
  • Python使用UDP广播实现服务器自动发现

    机房管理软件或者教学软件一般都由服务器和客户端组成,当客户端启动之后会自动搜索服务器,这是如何实现的呢?下面通过一段代码来演示其中一种比较高效的方法。 客户端...

    Python小屋屋主
  • 基于TCP的套接字

    socket通信流程与打电话流程类似,我们就以打电话为例来实现一个low版的套接字通信

    超蛋lhy
  • php实现socket网络编程

    之前本人其实写过一个tcp多进程服务器了http://www.php20.cn/article/139,本文将总结以及完善php实现网络服务器相关代码

    仙士可
  • tcp服务端socket

    skylark
  • Java TCP通信概念及实例

                  <1>TCP:类似于电话系统,建立双向的通信通道,确定连接,话音顺序接听。

    Rekent
  • 一步步教你用 WebVR 实现虚拟现实游戏[每日前端夜话0x64]

    虚拟现实(VR)是一种依赖计算机生成环境的体验,其应用范围广泛:美国利用虚拟现实进行冬季奥运会的运动训练;外科医生正在试验用虚拟进行医学培训;把虚拟现实用于游戏...

    疯狂的技术宅
  • java初级笔记----API

    一、类Object java.lang.Object 是类层次结构的根类,每个类都使用object作为超类。所有对象(包括数组)都实现这个类...

    曼路

扫码关注云+社区

领取腾讯云代金券