7-4. php実践④ファイルの操作 続
ファイルの操作の続きです。
1-1.fopen関数のモードパラメータ
前回勉強したfopen関数について、いくつかモードパラメータがあります。おさらいですが、fopen関数はファイルを開くときの呼び出し時に呼び出し方法を指定できる関数です。
以下の赤字の箇所にモードパラメータを指定することで、読み取り時にどういう動作をしてほしいかを決めることができます。
◎モードパラメータ
モード | 動作 | ファイルポインタの場所 |
---|---|---|
'r' | ファイルを最初から読み取る | ファイルの先頭 |
'r+' | ファイルを最初から読み取り、書き込みを可能にする | ファイルの先頭 |
'w' | ファイルの最初から書き込みを行い、ファイルを切り詰める(空にする) | ファイルの先頭、ファイルサイズはゼロ |
'w+' | ファイルの最初から書き込みを行い、ファイルを切り詰め(空にする)、読み取りを可能にする | ファイルの先頭、ファイルサイズはゼロ |
'a' | ファイルの終端に付加する | ファイルの終端 |
'a+' | ファイルの終端に付加し、読み取りを可能にする | ファイルの終端 |
保存したファイルにデータを追加したい場合、先ほど示したモードパラメータの'a'もしくは'a+'を使います。
1-2.同時的アクセスに備えたファイルのロック
webプログラムが多数のユーザーに同時に呼び出されるのはよくあることなのですが、複数の人がいっせいにファイルの書き込みを行おうとするとファイルは破損する可能性があります。
また誰かがファイルに書き込みを行っているときに別の人が読み取りを行うと、問題は発生していなくても正常に読み取りができていない可能性も起きます。
それを防ぐためにファイルをロックする『flock関数』を使用します。
ロック方法は4つあり、以下にまとめました。
◎ロック方法
ロック方法 | 概要 |
---|---|
LOCK_SH | 共有ロック(他のユーザーにファイルの読み取りは許可、書き込みはNG) |
LOCK_EX | 排他的ロック(ファイルの読み取り、書き込みNG) |
LOCK_UN | ロック解除 |
LOCK_NB | ロック中にflock()でブロックさせない |
そしてコードを書いてみます。
結果はこう。
1-3.ファイルのアップロード
ファイルをフォームからアップロードするには、『mutipart/form-date』というエンコードタイプを選ぶだけで、あとはブラウザが処理してくれます。
リスに書いてあるコードを打ち込んだだけだけど、、、
うひょーなんかよく見るファイルアップロードが出てきた!
ちょっとこれ咀嚼できてないですねこれわたし、ただただ興奮している。。
このコードを紐解いていこう。。。
これは明日更新しまする。
いじょー