swoole文件操作函数fread异常

swoole协程函数fread和fseek操作文件遇到异常现象

1.使用原生php操作文件,正常执行

php_fread.png

2.使用swoole协程文件操作函数fread和fseek操作,就算指针已经移动到最后了,可是feof判断指针是否处于末尾,一直返回false,导致程序无法结束。此外还想问一下,php原生的fread读取内容之后,指针默认会向后移动,但是swoole的 system::fread 不会移动指针。

问题1.png
问题2.png

swoole这块功能官方文档:
https://wiki.swoole.com/wiki/...

阅读 502
评论
    3 个回答

    // swoole协程操作文件的相关代码
    // 1.txt 的内容:1234abcd5678
    @韩天峰 谢谢老大,帮我解答。

    
    
    <?php
    
    use \swoole\coroutine\system;
    
    
    $cid=\swoole\coroutine::create(function(){
    
            try {
                $file='./1.txt';
                $fp=fopen($file, "r");
                $i=1;
                while(true){
                    $isEnd=feof($fp);
                    var_dump("是否处于文件末尾:",$isEnd);
                    if($isEnd){
                        break;
                    }
    
    
                    var_dump(system::fread($fp,4));
                    fseek($fp,4*$i);
                    $i++ ;
                    system::sleep(0.5);
                }
                $fp=fclose($fp);
    
            } catch (Throwable  $se) {
                var_dump("程序捕获异常+错误",$se->getMessage());
            }
    
    
    
    });