PHPのファイルシステムのプログラミング
PHPファイルシステムの仕組みとプログラミング方法
PHPファイルシステムの仕組み※画像クリックで拡大表示
※アイコンの機能:表示 実行 ダウンロード
- PHPのファイルシステムの概要
- ファイルは、記録媒体に保存された一固まりのデータやプログラムで、OSはファイル単位で格納場所、サイズ、更新日時等の管理をしています。
ファイル構造の特徴として、1件ごとのレコードとそのレコードの各項目(フィールド)から構成され、ファイル一括、レコード、フィールドのデータ格納単位で入出力処理が可能です。 - 一般的なファイル処理のプログラミングは、
- ファイルを開く…fopen 関数でファイルポインタのセット
- ファイルを読む…fgetc 関数(文字単位)、fgets 関数(行単位)で、現在のファイルポインタの位置からファイルを読み込む
- ファイルを書く…fwrite(fputs) 関数(行単位)でファイルを書き込む
- ファイルを閉じる…fclose 関数でファイル閉じて、ファイルポインタの解放
- ファイルポインタとは、
現在ファイルをどこまで読んだか、書いたかを示し、ファイルオープン時に設定されます。(初期状態でのファイルポインタは、ファイルの先頭位置) - ファイル・オープンのモードは、
読み込み(read)、書き込み(write)、追加書き込み(append)、読み書き(+マーク付き)などのモードがあり、ファイルの先頭や終了位置の指定をオープン・モードで設定されます。
指定 ファイル・オープンモードの内容 r 読み込みのみ r+ 読み込みして、書き込み w 書き込みのみ(ファイルがない場合は、作成) w+ 読み込み / 書き込みのみ(ファイルがない場合は、作成) a 追加書き込みのみ a+ 読み込み / 追加書き込みのみ(ファイルがない場合は、作成) x 書き込みのみ(ファイルの先頭のファイルポインタから)ファイルが既に存在する場合は、エラーとなる x+ 読み込み / 書き込みのみで、他は'x'モードの振る舞い c 書き込みのみで、ファイルが存在しない場合には新規作成(PHP5.2.6以降) c+ 読み込み / 書き込みのみで、他は'c'モードの振る舞い(PHP5.2.6以降) - フィールド区切りの処理は、
フィールドの固定長、可変長があり、日本語処理上では可変長が一般的で、「コンマ(CSV形式)区切り」又は「tab区切り」を利用します。fgetcsv 関数(読み込み)、fputcsv 関数(書き込み)によりフィールド単位の配列処理が可能です。 - ファイル制御の仕組みと指定方法
あるプロセスと別のプロセスが同時書き込みによりデータの破損を防ぐ方法として、flock 関数による「ファイルロック」があります。
ロック方法には他のプロセスからの読み込み・書き込みの両方を禁止する「排他ロック(LOCK_EX)」と書き込みのみ禁止の「共有ロック(LOCK_SH)」があり、「LOCK_UN」でロックを解除します。また、ロック中ブロックモードとしないノンブロックモード「LOCK_NB」もあります。
- ファイルは、記録媒体に保存された一固まりのデータやプログラムで、OSはファイル単位で格納場所、サイズ、更新日時等の管理をしています。
ファイルシステムのプログラミング
- ディレクトリ・ファイル操作の主な関数は、
- ファイル・メンテナンスの処理は、
変更指示データを読み込んで、マスターデータの内容を更新するプログラムでは、windows環境の「ShiftJIS」コードを考慮する必要がありますが、ファイルデータを表示しない場合はスルーすることで、「コード変換」は不要となります。
※このファイルメンテナンスのプログラム→ - ZIPファイルの圧縮・解凍処理は、
ZipArchiveクラスを利用しますので、PHPクラス・オブジェクトの内容の習得が必要になります。
事例として、ユーザー関数の「ZIPファイル圧縮」と「ZIPファイル解凍」を利用したプログラム内容を確認して下さい。