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/...

阅读 3.7k
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());
        }



});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题