队列IO
在Monent1.3时,写入/读取都是使用buffer的,容易buffer过大导致内存分配失败造成报错退出
于是在一周后,Moment1.4加入了队列IO解决这个问题
write()也返回Promise
队列化的write()
支持写入PHP底层后兑现Promise,也就是说现在无需担心会造成写入太多内容内存溢出
旧版:
Promise::await(function(){
while(true){
$a -> write(str_repeat('a',1 * 1024 * 1024));
yield Promise::new(fn($rs) => $this -> on('empty',$rs));
}
});
新版:
Promise::await(function(){
while(true){
yield $a -> write(str_repeat('a',1 * 1024 * 1024));
}
});
read()避免争夺数据
可能有多个read()并行时容易出现数据抢夺,因此V1.3设置了限制(会报错)
这时V1.4的队列IO就发挥作用了
$a -> readline() -> then(fn($d) => log('accepted:' . $d));
$a -> read() -> then(fn($d) => log('accepted:' . $d));
而旧版会抛出Error
Error: Queue: readIO is busy
FTP协议
为了弥补Moment对WebDAV兼容性问题(无法上传和某些APP兼容性不好),我们引入了FTP协议
支持单独的FTP端口(默认21)和可复用数据接口(默认1024)
本文由 zlh 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。