Swoole IO异步读取文件与写入文件

Swoole IO异步读取文件与写入文件 持续更新

  • 简单IO异步读取文件 实现
  • 简单IO异步写入文件 实现

简单IO异步读取文件 实现

read.php


/**
 * Created by PhpStorm.
 * User: dom
 * Date: 19-2-21
 * Time: 下午2:55
 */

/**
 * 读取文件 最高4M大小的文件
 */
swoole_async_readfile(__DIR__."/data.txt",function ($fileName,$fileContent){
    echo "fileName:{$fileName}".PHP_EOL;
    echo "fileContent:".PHP_EOL.$fileContent.PHP_EOL;
});

echo "看看我是先输出还是后输出";

swoole_async_readfile最大可读取4M的文件,受限于SW_AIO_MAX_FILESIZE宏
如果要读取大文件,可以考虑使用以下函数
swoole_async_read(string $filename, mixed $callback, int $size = 8192, int $offset = 0);

此函数与swoole_async_readfile不同,它是分段读取,可以用于读取超大文件。每次只读$size个字节,不会占用太多内存。

简单IO异步写入文件 实现

write.php


/**
 * Created by PhpStorm.
 * User: dom
 * Date: 19-2-21
 * Time: 下午3:10
 */

$content = time().PHP_EOL;
swoole_async_writefile(__DIR__."/data.log",$content,function ($fileName){
    echo "追加写入成功!";
},FILE_APPEND);

echo "看看我是先输出还是后输出";
  1. 参数1为文件的名称,必须有可写权限,文件不存在会自动创建。打开文件失败会立即返回false
  2. 参数2为要写入到文件的内容,最大可写入4M
  3. 参数3为写入成功后的回调函数,可选
  4. 参数4为写入的选项,可以使用FILE_APPEND表示追加到文件末尾
  5. 如果文件已存在,底层会覆盖旧的文件内容

可应用于日志的写入

你可能感兴趣的:(工具使用,原创)