

お世話になります。

前回の質問から、ろくに時間もかけていないのに申し訳ありません。

PHP+Mysqlで、シミュレーションゲーム的なものを作る際(前回と同じです)、  
今度は、自分の国から相手の国に攻め込んだ時の様な処理です。

自分のブラウザ側で、相手の国を選択して出陣し、到着(結果が出るのが)が  
30分後だとします。然し、その前に自分側も相手側もブラウザを閉じ、  
一切手動のデータ更新を行わないながらも、出陣した30分後には、第三者が  
攻められた相手の国がどうなったかを知ることができるような状態の時は、  
必ずその『30分後』に更新を行わないといけないと思うのですが、こういったことは  
サーバー側に『後～秒後に処理を行う』という仕組みはできるのでしょうか。

ただSQLを発行するだけでなく、自分と相手の国のデータを取得し、攻撃力やら  
耐久力やらの計算を行った後、結果をデータベースに反映させたいのです。

これはもう、mysqlではなく、PHPの問題になるのでしょうか？

よろしくお願いいたします。


CC BY-SA 3.0
2015-07-02T05:13:35.167
11944
2015-07-02T06:40:22.800
9374
question
php mysql sql
特定時間後に処理をさせる方法


一般的には出陣を押した時点で勝敗の結果はデータベースに格納されていると思います。  
その際に閲覧可能時刻（30分後）を合わせて登録しておき、ユーザーがログインした際にその閲覧可能時刻を超えていれば結果を表示し、超えていなければ「出陣中」などの表示をすることになると思います。


CC BY-SA 3.0
2015-07-02T05:24:05.317
11945
2015-07-02T05:24:05.317
10083
11944
answer


厳密に時間通りにイベントをこなす例を書きます。

何かイベントが起こったときに、MySQLのテーブルにイベントの種類、イベントの処理を行う時間、それと処理済フラグを0で入れておきます。

そして、誰かがアクセスしたタイミングでテーブルを見て、現在時刻＞処理を行う時間、かつ処理済フラグが0のものを時間順に処理し、処理済フラグを立てます。

これで漏れなく順番にイベントを処理できると思います。

処理済フラグを使わず、処理が終わったレコード自体を削除してしまっても良いです。


CC BY-SA 3.0
2015-07-02T06:40:22.800
11950
2015-07-02T06:40:22.800
2232
11944
answer