• ベストアンサー

入力してからn時間(日)後、DBデータを書き換え

いつもお世話になっております。 PHP+MySQLにてデータ管理をしています。 わりと初心者ですがよろしくお願いします。 入力フォームにてhogeの値を1とし、DBを書き換えるとします。 これを入力後、この1という値を30日後に自動で2に上書きする、というようなことは実現可能でしょうか? コードを組む上での考え方など教えていただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.2

可能か不可能かと問われれば可能です。 1つのPHPでやらせようとするのは無謀に思います。 いくつかやりかたが思い浮かびますが、私ならcronで実行するバッチを組んで実行させます。 フォームの値を本来のとは異なるDBに格納しておき、 毎日1回cronで実行するPHPスクリプトでそのDBを参照し、 30日前に格納されたデータがあれば本来のDBに格納する、というような。

errorman
質問者

お礼

回答ありがとうございます。 先に別のDBに値を格納しておく、というのは考えつきませんでした。 cronの勉強も必要ですね。 参考にさせていただきます!

その他の回答 (3)

回答No.4

時間がシビアでなくてよいなら、 php内に、システム日付と登録した日付が30日以上開いていたらupdateするSQLを適当に埋め込んでおいて、 だれかが、サイトを閲覧してくれたら、そのきっかけで、DBを書き替えるという方法もありますね。 毎回だと負荷高くなるので、その日初めてアクセスがあったときだけという ロジックを入れて。

errorman
質問者

お礼

回答ありがとうございます。 確かに、特にシビアというわけでもないのでその方法でも問題なさそうですね。 誰かのアクセスでこのプログラムを動作させるというのは思いつきませんでした。 参考にさせていただきます!

回答No.3

こんにちは。 MySQLのバージョンにもよりますが、 Eventというものもあります・・・。 参考まで。

errorman
質問者

お礼

回答ありがとうございます。 Eventですか。ちょっと使い方がよくわからないので調べてみます!

  • Yupa3
  • ベストアンサー率37% (190/513)
回答No.1

どちらかというと、DBサーバ側での実装になると思います。 各データの入力時間をレコードに持たせておいて、夜間バッチ等でチェックを行い、一ヶ月経っている物をインクリメントする、とか。 その場合はJavaとかPerlとか、サーバサイドで独自に稼動する言語で組む必要があります。 PHPはどちらかというとWebのUI側の実装の言語になると思うので、一度DBに入ってしまった物を管理するのには向かないと思いますよ。

errorman
質問者

お礼

回答ありがとうございます。 うーんなるほど・・・。 サーバをいじる知識はほぼ皆無なので、なにか方法があればよいのですが。

関連するQ&A