PHPで作るチャット(3) ログファイルへの書き込み

2016年8月27日

前回はログファイルのチェックと作成について解説しました。

今回は作ったログファイルにテキストを書き込む方法についてです。

ログファイルのファイルポインタを得る

ファイルにテキストを書き込むには、そのファイルを書き込みモードで開き、そのファイルポインタを得る必要があります。

これは、関数 fopen を使ってできます。

fopen(ファイル名, モード);

モードについて

関数 fopen の第二引数にモード(どういった目的でファイルにアクセスするか)を指定します。

モードには様々な種類がありますが、今回は書き込みのみを目的とするため、書き込みモード a を指定します。a は追記するための書き込みモードなので、すでにファイルにテキストが書き込まれていた場合、それはそのままにして、テキストをファイルの最後に書き加えてくれます

書き出し用のみでオープンします。ファイルポインタをファイルの終端に置きます。ファイルが存在しない場合には、作成を試みます。このモードは、fseek() では何の効果もありません。書き込みは、常に追記となります。

PHP: fopen - Manual

ファイルポインタについて

この関数は、ファイルを開くことに成功するとファイルポインタ(ファイルにアクセスするために必要なもの)を返しますので、変数でそれを受け取る必要があります。このことを踏まえて関数を書くと、以下のようになります。

$fp = fopen(ファイル名, "a");

fopen は、ファイルを開くのに失敗した場合は false が返されますので、以下のようにすると失敗したときはメッセージを表示してスクリプトを終了させることができます。

$fp = fopen(ファイル名, "a") or exit(メッセージ);

or論理演算子の一つで、左側に書いた部分が false だった場合に右側に書いた処理を行わせることができます。

script.phpの修正

前回、ファイルが存在しない場合に touch でファイルを作る処理を追加していました。

しかし、実は fopen はこの処理を自動的で行ってくれます。なので、前回書いた処理を消して、script.php を以下のように修正してください。

<!-- script.php -->

<?php

$LOG_FILE_NAME = "log.txt";

//書き込みモードでファイルを開く
$fp = fopen($LOG_FILE_NAME, "a") or exit($LOG_FILE_NAME . "が開けません");

echo "OK";
?>

書き換えた後、このスクリプトを実行してみましょう。

前回説明したように、ディレクトリのパーミッションを正しく設定できているなら、画面に「OK」と表示されます。

log.txt がない場合は自動に作成されると思います。確認してみてください。

ログファイルへテキストを書き込む

それでは、先ほど得たファイルポインタを使って、実際にテキストをファイルに書き込んでみましょう。

ファイルにテキストを書き込むには、関数 fwrite を使います。

fwrite(ファイルポインタ, 書き込む文字列);

例えば「Hello!」と書き込むには、以下のようにします。

<!-- script.php -->

<?php

$LOG_FILE_NAME = "log.txt";

//書き込みモードでファイルを開く
$fp = fopen($LOG_FILE_NAME, "a") or exit($LOG_FILE_NAME . "が開けません");

fwrite($fp, "Hello!");

?>

このスクリプトを実行すると log.txt に「Hello!」と書き込まれます。

追記モードなので、再度スクリプトを実行すると、Hello!が二回連続で書き込まれます。

次回初回に作ったフォームから、ログファイルにテキストを書き込むために必要な事柄を解説します。

PHPで作るチャット(3) ログファイルへの書き込み」への2件のフィードバック

  1. ピンバック: PHPで作るチャット(4) HTMLのフォームから送信されたデータを受け取る | JoyPlotドキュメント

  2. ピンバック: PHPで作るチャット(5) フォームから送信されたデータをファイルに書き込む | JoyPlotドキュメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です