0

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

9527 6
11月7日提问

查看全部 3 个回答

0

// 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());
        }



});

推广链接