2011年4月1日金曜日

ファイルの読み込み書き込み方法

時刻と乱数データーを書き込み、読み込んむ表示方法
ブラウザーの更新により、同じフォーマットで行が増えて、時刻と乱数が変化するプログラム
※アクセスカウンターやファイルの記録、アクセスログの取得に活用できます。

fopen・・・ファイルを開く
fputs・・・テキスト書き込む
fgets・・・テキストを読む
fclose・・・ファイルを閉じる

<head>
<meta http-equiv=”Content-type” content=”text/html; charset=euc-jp”>
<title>ファイルの読み書き方法</title>
</head>
<?php
// □ ファイルの作成
//hh(XX時)をファイル名にする
$filename = date(“H”) .”.txt”;
//追加書き込みモードで開く(ファイルが無いときは作成)
$fh = @fopen($filename,”a”);
if (!$fh){
//メッセージを出してスクリプトを終了
exit(“ファイル書き込みのオープンで失敗しました”);
}else{
//排他ロック
flock($fh,LOCK_EX);
//乱数を保存と日付と区切り文字(.” ==> “)
$msg = date(“Y/m/d H:i:s”) .” ==> “;
//1から9999までの乱数と改行(¥n)
$msg.= rand(1,9999) .”\n”;
//書き出し
fputs($fh,$msg);
//ロックを解除
flock($fh,LOCK_UN);
//ファイルを閉じる
fclose($fh);
}
//———————————————
// □ ファイルを読む
//file_exists関数でファイル名またはディレクトリを確認。
//あればTUREなければFALSE
if (file_exists($filename)){
//読み取りモードで開く。
//@マークは式の前につけるとエラーメッセージを無視します。
$fh = @fopen($filename,”r”);
if (!$fh){
//メッセージを出してスクリプトを終了
exit(“ファイル読み込みのオープンで失敗しました”);
}else{
while(!feof($fh)){
//一行ずつ(改行記号まで)最後まで読み込み
$temp = fgets($fh);
//内容を出力
if ($temp>”"){echo str_replace(“\n”,”<br>”,”★$temp”);}
}
//ファイルを閉じる
fclose($fh);
}
}
?>

ファイルのモード
r  ・・・読込のみでオープン
r+ ・・・読込/書出し用にオープン
w  ・・・書出しのみでオープン  一行のみ表示
w+ ・・・読込/書出し用でオープン
a ・・・追加書出しのみでオープン 複数行表示
a+ ・・・読込/追加書出し用でオープン

LOCK_SH ・・・解放されるまで他の書き込みNG、読込はOK
LOCK_EX ・・・解放されるまで他の書き込み、読込もNG
LOCK_UN ・・・解放

0 件のコメント:

コメントを投稿