当前位置: 移动技术网 > IT编程>开发语言>PHP > [PHP] stream_set_blocking非阻塞模式影响fgets fread函数

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

2019年12月06日  | 移动技术网IT编程  | 我要评论

降龙妹,前列腺炎囊肿,党的十八大精神是什么

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

 

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网