请注意,对于文件,dio_open()/dio_write()/dio_close() 比 fopen()/fwrite()/fclose() *更快*。
fwrite() 必须管理一个 8k 缓冲区,而 dio_write() 只发出一个写入请求。最终的结果是减少了系统调用和内存访问。
此外,与 dio_write() 一样,将完整大小传递给 write() 使文件系统能够正确使用预分配,以避免碎片。
(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)
dio_open — 打开一个文件(如果必要,则创建它),其级别低于 C 库输入/输出流函数允许的级别
一个文件描述符或错误时为 false
。
示例 #1 打开一个文件描述符
<?php
$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
dio_close($fd);
?>
请注意,对于文件,dio_open()/dio_write()/dio_close() 比 fopen()/fwrite()/fclose() *更快*。
fwrite() 必须管理一个 8k 缓冲区,而 dio_write() 只发出一个写入请求。最终的结果是减少了系统调用和内存访问。
此外,与 dio_write() 一样,将完整大小传递给 write() 使文件系统能够正确使用预分配,以避免碎片。
使用直接 I/O 的一个主要原因是它能够执行真正的直接 I/O,绕过操作系统缓存并直接从磁盘获取数据。
执行此操作的标志(O_DIRECT)在上面的文档中缺失。也许有充分的理由,因为这种类型的 I/O 仅适用于块设备,不适用于文件,并且只有在你**非常**确定自己在做什么时才应该使用它。
要指定标志的组合,请将它们按位或运算。
这是我唯一能够让它追加的方式
$fd = dio_open($file, O_WRONLY | O_APPEND);