請注意,對於檔案而言,dio_open()/dio_write()/dio_close() 比 fopen()/fwrite()/fclose() *更快*。
fwrite() 必須管理一個 8k 的緩衝區,而 dio_write() 只發出單一的 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() 只發出單一的 write()。最終結果是更少的系統呼叫和更少的記憶體存取。
此外,像 dio_write() 那樣將完整大小提供給 write(),讓檔案系統可以正確地使用預先配置,以避免碎片化。
使用直接 I/O 的主要原因之一,就是它能夠執行真正的直接 I/O,繞過作業系統快取,直接從磁碟取得資料。
執行此操作的旗標 (O_DIRECT) 在上述文件中並未提及。這或許有其原因,因為這種類型的 I/O 只能作用於區塊裝置,而非檔案,而且只有在您**真的**確定自己在做什麼的情況下才應該使用。