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);
~~~
';