基本方針は nfnoface様の回答(fgets
関数を使う)と同様ですが、
ご質問の「実現したいこと」を加味すると、以下の変更・追加をするのがよいでしょう。
fopen
関数の第2引数を'r'
から'r+'
に変更
=> 行数を数えた後、同じファイルに書き込みを行なうため。
=> 同時に複数のリクエストを受け取ったときに、データの不整合が生じるのを防ぐため。
http://php.net/manual/ja/function.fopen.php
'r+' 読み込み/書き出し用にオープンします。 ファイルポインタをファイルの先頭に置きます。
http://php.net/manual/ja/function.flock.php
flock — 汎用のファイルロックを行う
例えば、以下のようになります。
php
1<?php
2
3// 実際は入力フォームから受け取ったデータ
4$text = 'hoge';
5
6$fp = fopen('test.txt', 'r+');
7flock($fp, LOCK_EX);
8
9$count = 0;
10while (fgets($fp) !== false) {
11 $count++;
12}
13
14// 次の投稿番号
15$next = $count + 1;
16
17fwrite($fp, $next . ',' . $text . PHP_EOL);
18
19flock($fp, LOCK_UN);
20fclose($fp);
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/01 17:13