json形式で保存する際に

前回は、受け取ったデータを配列に入れて、その配列にしたものをjson_encodeしjson形式に 変換したものをファイルに保存するという事をやりました。しかし、保存したものを見てみると一つしか 保存されておらず、更新するとチャットの文字が消えてしますので全くチャットと言えるものにはなっていません。 なので、保存するときにデータが一つずつ保存され、かつブラウザが更新されてもチャットログが消えないようにしないといけません。

保存するときに追記されるようにする

php側でデータをfopen関数で書き込むときに、モード選択をwにしていました。wは新規作成&書き込み なのでファイルを上書きしてしまうみたいです。なので保存されるときに一つしか保存されなかったのです。 書き込む際にもう一つモードがあるみたいで、a+というモードがあり、これはファイルがなければ新規作成&追加書き+読み といった追加できるモードがありこれを試してみることに。fopenでモードを指定するときにwではなくa+と変更してあげました。 するとチャットで打ち込んだ文字がどんどん追加されていきます。しかし、追加されたのはいいのですが ひとつひとつのjson形式の文字列が後ろに追加されていく状態になっているため、一つだけだとjson形式になるのですが 追加されてくことによりjson形式ではなくなってしまうのです。このjson形式になっているものを一つずつ単体になるように保存しないといけません。 fwriteで書き込む際に後ろにカンマをつけてあげれば区切られるのかなとやってみましたが、これもまた失敗です。

やり方がわからずこの日は時間が来てしまいました。明日はこれを解決しなければなりません。

1月17日 宮本 勇