PHPKonf: Istanbul PHP Conference 2017

ダイレクト IO 関数


  • dio_close — fd で指定したファイル記述子を閉じる
  • dio_fcntl — fd について C ライブラリの fcntl を実行する
  • dio_open — C ライブラリの入出力ストリーム関数が許すよりも低レベルでファイルをオープンする (必要ならファイルを作成する)
  • dio_read — ファイル記述子からバイトデータを読み込む
  • dio_seek — fd 上で whence から pos に移動する
  • dio_stat — ファイル記述子 fd に関する stat 情報を取得する
  • dio_tcsetattr — シリアルポートの端末属性とボーレートを設定する
  • dio_truncate — ファイル記述子 fd をオフセットバイトへ丸める
  • dio_write — オプションで丸め長さを指定してデータを書き込む
add a note add a note

User Contributed Notes 3 notes

tom at bitworks dot de
9 years ago
to use mandatory locking on a linux system, the filesystem has to be well prepared.

# /etc/fstab: static file system information.
# <file system> <mount point>   <type>  <options>               <dump>  <pass>
/dev/hda1       /               ext3    errors=remount-ro,mand  0       1
/dev/hda2       none            swap    sw                      0       0
proc            /proc           proc    defaults                0       0
/dev/fd0        /floppy         auto    user,noauto             0       0
/dev/cdrom      /cdrom          iso9660 ro,user,noauto          0       0

For example here the ext3 partition has been prepared for mandatory locking. Otherwise no dio_function will work on the system.
php dot 5 dot gavinostlund at spamgourmet dot com
9 years ago
You can manually build the dio extension for your version of PHP, or install an older version of PHP that still bundled dio.  It's not that hard to build it yourself, just a bit of a process, and it helps if you're on linux, and have a build environment... which I would assume you have if you are doing some kind of development that requires direct device I/O...  Just get the dio source from the cvs repo, compile it, and then add the extension to your php configuration...
richard d_0t cubek a_t example D0_t com
9 years ago

--enable-dio is NOT recognized as an option. After reporting a bug, i got following answer:

It is not bundled anymore. See to fetch the CVS version (being unmaintained, there is no release in pecl). Not a bug > bogus.
To Top