ファイル操作
指定のファイルの有無
- bool file_exists(string filename)
-
指定の場所に指定の名前のファイルfilenameがあるかどうかを検証する。あればtrue、無ければfalse。
ファイルを読み書きする
- int fopen(string filename,string mode[r|r+|w|w+|a|a+])
-
ファイルfilenameを指定のモードmodeで開く。
mode r 読み込みモード。ファイルの先頭から読み込む。 r+ 読み込み/書き込みモード。ファイルの先頭から書き込む(上書き)。 w 書き込みモード。ファイルを空にしてから書き込む。ファイルが存在しなければ作成する。 w+ 読み込み/書き込みモード。ファイルを空にしてから書き込む。ファイルが存在しなければ作成する。 a 書き込みモード。ファイルの終端から書き込む。ファイルが存在しなければ作成する。 a+ 読み込み/書き込みモード。ファイルの終端から書き込む。ファイルが存在しなければ作成する。 戻り値(int)はファイルポインタfp(ファイルのメモリ上の位置=ファイルの実体)。
- bool flock(int fp,string mode[1|2|3|4])
-
ファイルの排他制御などを行う。
mode 1 読み込み用ロック 2 書き込み用ロック(排他制御) 3 ロック解除 - string fread(int fp,int length)
-
ファイルfpからlengthバイト読み込む。
戻り値(string)は読み込んだ文字列。
- int fwrite(int fp, string string)
-
文字列stringを指定のファイル(fp)に書き込む。
戻り値(int)は書き込んだバイト数。
- bool fclose(int fp)
- ファイルfpを閉じる
ファイルの中身を全部読み込む
- array file(string filename)
- ファイルのデータを配列として全部読み込む。
<?php
$file_name = "counter.dat"; //同じディレクトリ上にあるcounter.datというファイルにデータを保存
if(!file_exists($file_name)){ //counter.datというファイルが存在しなければ
$count[0] = 0; //はじめてのアクセスということでカウンターを0で始める
}else{
$count = file($file_name);//counter.datがあればその中身を読み込む。fread()は面倒なのでfile()を用いている。
}
$count[0]++;
$fp = fopen($file_name,'w');//書き込むためにcounter.datをオープンしてメモリ上にその中身を展開する
flock($fp,2);//排他制御開始
fwrite($fp,$count[0]);//現在の訪問回数(counterの数値)を書き込む
flock($fp,3);//排他制御終了
fclose($fp);//ファイルを閉じる
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>簡易カウンター</title>
</head>
<body>
<h1>簡易アクセスカウンタ</h1>
<p class="result">
<?php
print 'あなたは、'.$count[0].'人目の訪問者です';
?>
</p>
<footer>
<address>カウンター</address>
</footer>
</body>
</html>