アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP初心者です。
勉強を兼ねて、掲示板機能を自分で作っているのですが
編集機能の仕組みがいまいち分かりません。


自分なりに考えてみたフローチャートを載せますが
こんな感じで良いのでしょうか??
もっと簡単な方法がある場合、アドバイスをお願いします。



<編集機能>
(1)ログを読み込み、配列に格納
  ↓
(2)修正したいナンバーと一致した配列のデータを修正
  ↓
(3)ログを開く
  ↓
(4)ログ全消し
  ↓
(5)配列のデータを1行ずつログに書き込む
  ↓
(6)ログを閉じる。

A 回答 (2件)

基本的にはそのフローチャートで可能かと思いますが。

。。ちょっと問題があります。

WEBの性質上、掲示板では同時に複数の人が編集可能になりますので、その辺のロジックを入れる必要があります。
#2番と#5番を同時に編集していたとして、保存のタイミングによっては一旦#2番が更新されたのにも関わらず、#5番を更新した時に#2番が更新前に戻ってしまう、と言う事が考えられます。
ですから、更新時には一時的にファイルをロックし、更新させたいIDがついたデータのみを更新し、ファイルロックを解除、と言う方法をとる必要があります。
通常、掲示板を編集出来るのは管理者と投稿者だけでしょうから、複数の人が同じIDを編集する事はあまり考えられませんが、想定しておく必要があります。こういう場合にはそのIDに編集中フラグを立てておき、更新後にフラグを下げる、と言うようにする必要があります。フラグが立っている時は他人は編集不可にする等の処置が必要になります。ただ、WEBの場合は編集を始めたけど途中で面倒になって止めてしまった、なんて場合はフラグが立ちっぱなしになってしまうので、一定時間経過後には下げる必要がありますね(下がっている場合は更新ポストははじく)。

このような機能が全てうまく機能してはじめて同時編集で矛盾が生じなくなるのですが、実装は結構めんどうです。そんな時はログファイルではなく、DBを使うのをお勧めします。

参考までに、初心者でも7日で作れる掲示板というページを紹介しておきます。
http://webtips.open-log.net/
    • good
    • 1

>(3)ログを開く


>  ↓
>(4)ログ全消し
ファイルを追記モードではなくて上書きモードで開けば
この処理は基本的には必要ないでしょう。
w+でファイルを書き込みだけだと基本的には意図的に変なことしない限り問題ないとおもうけど
読み込みで書き込むならr+でファイルオープンする可能性があると思うけど
その場合ファイルポインタについて気をつけないと変なことになるから注意すること。

ちょっとめんどくさいけど
ファイルポインタをうまく使えればこの処理内容をかなり簡素ができる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!