Swoole基础——07 AsyncIO


异步读取文件


1. swoole_async_readfile


// 函数风格
swoole_async_readfile(string $filename, mixed $callback);

// 命名空间风格
Swoole\Async::readFile(string $filename, mixed $callback);


返回结果

文件不存在会返回false,

成功打开文件立即返回true,

数据读取完毕后会回调指定的callback函数。


注意:
  • swoole_async_readfile会将文件内容全部复制到内存,所以不能用于大文件的读取

  • swoole_async_readfile最大可读取4M的文件。


示例
swoole_async_readfile(__DIR__."/1.txt", function($filename, $content){
	echo "文件名:".$filename.PHP_EOL;
	echo "内容:".$content.PHP_EOL;
});


Swoole\Async::readfile(__DIR__."/1.txt", function($filename, $content){
	echo "filename:".$filename.PHP_EOL;
	echo "content:".$content.PHP_EOL;
});





2. swoole_async_read

swoole_async_read(string $filename, mixed $callback, int $size = 8192, int $offset = 0);

回调函数
callback(string $filename, string $content);

$callback函数,可以通过return true/false,来控制是否继续读下一段内容。

  • return true,继续读取
  • return false,停止读取并关闭文件

特点

异步读文件,使用此函数读取文件是非阻塞的,当读操作完成时会自动执行回调指定的函数。

此函数与swoole_async_readfile不同,它是分段读取,可以用于读取超大文件。

每次只读$size个字节,不会占用太多内存。






异步写入文件


1. swoole_async_writefile


// 命名空间风格
Swoole\Async::writeFile(string $filename, string $fileContent, callable $callback = null, int $flags = 0)

// 函数风格
swoole_async_writefile($filename, $file_content, function($filename) {
    echo "wirte ok.\n";
}, $flags = 0);


参数说明
  • $filename:文件的名称,必须有可写权限,文件不存在会自动创建。打开文件失败会立即返回false

  • $fileContent:要写入到文件的内容,最大可写入4M

  • $callback:回调函数(可选)

  • $flags:写入的选项,可以使用FILE_APPEND表示追加到文件末尾

  • 如果文件已存在,底层会覆盖旧的文件内容


示例
$content = date("Ymd H:i:s").PHP_EOL;

swoole_async_writefile(__DIR__."/1.txt",$content,function($filename){
    echo "success".PHP_EOL;
},FILE_APPEND);

echo "start".PHP_EOL;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值