zoukankan      html  css  js  c++  java
  • [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);
    } 

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

  • 相关阅读:
    ryzen nvidia hackintosh
    mysql count 主键之坑
    git命令
    MYSQL 注释
    yaf twig配置
    1.YAF 的安装
    yaf nginx 设置
    ubuntu 16 阿里云 vsftpd
    win10下 homestead 安装
    活动调度
  • 原文地址:https://www.cnblogs.com/taoshihan/p/11991465.html
Copyright © 2011-2022 走看看