请注意,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 仅适用于块设备,而不适用于文件,并且仅在您**确实**确定自己在做什么时才应使用。