swoole_mmap::open

最后更新于:2022-04-02 06:32:33

# swoole\_mmap::open [TOC] 创建文件内存映射,函数原型: ~~~ function swoole_mmap::open($file, $size = -1, $offset = 0); ~~~ * $file 磁盘文件名称,必须是存在的文件,如果文件不存在将会创建失败。可以使用`file_put_contents`来初始化文件。 * $size 映射操作,默认为整个文件的长度,操作系统会分配同等大小的内存。注意不要尝试将超过系统内存尺寸的文件进行映射 * $offset 文件的映射起始位置,默认为0 * 执行成功将返回一个PHP的`stream`资源,可使用PHP提供的流式操作函数读写数据 ## 操作内存 * 读取数据,`fread`、`fgets` * 写入数据,`fwrite`、`fputs` * 关闭内存映射,`fclose`,底层会自动执行`fflush`将数据同步到磁盘文件 * 同步数据,`fflush`将内存中的数据写入到磁盘 ## 使用示例 ~~~ $file = __DIR__.'/data'; $size = 8192; if (!is_file($file)) { file_put_contents($file, str_repeat("\0", $size)); } $fp = swoole\mmap::open($file, 8192); fwrite($fp, "hello world\n"); fwrite($fp, "hello swoole\n"); fflush($fp); fclose($fp); ~~~
';