sblazheev / filesystem
异步文件系统抽象。
0.1.3
2019-04-24 13:04 UTC
Requires
- php: >=5.4.0
- evenement/evenement: ^3.0 || ^2.0
- react/event-loop: ^1.0 || ^0.5 || ^0.4
- react/promise: ~2.2
- react/promise-stream: ^1.1
- react/stream: ^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4
- wyrihaximus/react-child-process-pool: ^1.3
Requires (Dev)
- clue/block-react: ^1.1
- phpunit/phpunit: ^6.0 || ^5.0 || ^4.8
Suggests
- ext-eio: ^1.2
This package is auto-updated.
Last update: 2024-09-25 07:49:30 UTC
README
ReactPHP的基于事件的异步、非阻塞文件系统访问库。
目录
简介
react/filesystem是一个用于异步、非阻塞文件系统访问的包。通过以下描述的各种适配器启用异步访问。
适配器
- ChildProcessAdapter - 使用子进程执行IO操作的适配器(如果没有安装扩展,则为默认适配器)
- EioAdapter - 使用
ext-eio的适配器
示例
随着时间的推移,在此处添加示例。
创建文件系统对象
<?php $loop = \React\EventLoop\Factory::create(); $filesystem = \React\Filesystem\Filesystem::create($loop);
文件对象
<?php $loop = \React\EventLoop\Factory::create(); $filesystem = \React\Filesystem\Filesystem::create($loop); $file = $filesystem->file(__FILE__); // Returns a \React\Filesystem\Node\FileInterface compatible object
读取文件
$filesystem->getContents('test.txt')->then(function($contents) { });
这是一个方便的方法,用于
$filesystem->file('test.txt')->open('r')->then(function($stream) { return \React\Stream\BufferedSink::createPromise($stream); })->then(function($contents) { // ... });
这又是一个方便的方法,用于
$filesystem->file('test.txt')->open('r')->then(function ($stream) use ($node) { $buffer = ''; $deferred = new \React\Promise\Deferred(); $stream->on('data', function ($data) use (&$buffer) { $buffer += $data; }); $stream->on('end', function ($data) use ($stream, $deferred, &$buffer) { $stream->close(); $deferred->resolve(&$buffer); }); return $deferred->promise(); });
写入文件
以写入模式(w标志)打开文件,并将abcde写入test.txt,然后关闭它。如果它不存在,则创建它(c标志),如果存在,则截断它(t标志)。
$filesystem->file('test.txt')->open('cwt')->then(function ($stream) { $stream->write('a'); $stream->write('b'); $stream->write('c'); $stream->write('d'); $stream->end('e'); });
目录对象
<?php $loop = \React\EventLoop\Factory::create(); $filesystem = \React\Filesystem\Filesystem::create($loop); $dir = $filesystem->dir(__DIR__); // Returns a \React\Filesystem\Node\DirectoryInterface compatible object
列出内容
$filesystem->dir(__DIR__)->ls()->then(function (array $list) { foreach ($list as $node) { echo $node->getPath(), PHP_EOL; } });
安装
推荐通过Composer安装此库。 你是Composer的新手吗?
这将安装最新支持的版本
$ composer require react/filesystem:^0.1.1
许可协议
React/Filesystem采用MIT许可协议。