こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP+MySQLにて5ヶ月のキープリストを作りたいです。

PHP+MySQLにて5ヶ月のキープリストを作りたいです。

先にマルチポストになっていましたら、御免なさい。

現在、情報サイトを作っていますが、お気に入りのような機能を持たせたく思っています。
但し、お気に入りに登録しておける期間は、3ヶ月とかにしたいのですが、この処理は、PHP側でやるべきかMySQL側でやるべきかを悩んでいます。ハードに負荷を掛けずに出来るだけ早く終わらせたいのですが、どちら側でやるべきでしょうか?糸口を何方かお示し願えませんでしょうか?

こんな事書くのも何ですが、アクセス数は、そんなに見込んでいません.....(^^;)

宜しくお願いしますm(_ _)m

投稿日時 - 2010-09-06 23:59:39

QNo.6164066

困ってます

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

自信は無いのですが

PHP = 命令を出す側
SQL = 命令を受けて動く側

と自分は認識していたので、MySQL単体で何か処理を自動で出来るとは思えないんです。

レコードを削除したいのであれば
やはりphpで削除命令を出してやらないと
MySQLは動いてくれないんじゃないかと…

最初の方が言っている

「別処理として毎日午前0時に削除」

ですが、私の解釈では

「レコード検索&削除を実行するphpファイルを別途、用意しておいて
 それをcron設定などで毎日午前0時に起動させ処理させる」

といった事ではないかと思います。

その場合、量が多くなるとサーバー負荷になる可能性もありますので

私なら、ユーザーの何らかのアクション時についで処理させます。

例えば、データベースにお気に入り登録を実行するphpファイルに
5ヶ月以上経っているレコード検索と削除をするコードも一緒に書いておきます。

そおすれば、ユーザーの動きに合わせて消えてゆきますので
サーバー負荷は非常に軽いです。

投稿日時 - 2010-09-07 20:25:32

お礼

ご教示有り難う御座います。

ようやく納得がいきました。やはりPHP+MySQLの連携が必要なんですね。

PHPで「ユーザーのアクション毎に....」と言う事で、更にスッキリ致しました。

有り難う御座いましたm(_ _)m

本当は、どういうコードかサンプルが、欲しかったりもしたのですが、勉強の為に
自身で教えて下さったロジックを書いてみます。

本当に有り難う御座いました。

投稿日時 - 2010-09-07 22:49:21

ANo.2

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

PHP側でやると言うのが、具体的にどうするのかわかりませんが、お気に入りをDB登録するのならば、MySQLで処理するのが正攻法と言えます。

そして、5ヶ月以上経ったリストの削除は、別処理として毎日午前0時に削除すればいいでしょう。
また、もし5ヶ月以上経ったリストを削除しない場合でも、0,1のフラグにして0のもの(5ヶ月未満)だけを表示するようにした方が、毎回日付で絞り込むよりは早くなると思います。
そして、この処理(0,1を付与)も上記同様、毎日午前0時に処理します。

でも、サーバーのスペックにもよりますが、お気に入りの件数が数千件程度であれば、SQLで毎回削除してもさほど変わらないのではないでしょうか。

もし、PHPでやるのならば、MySQLを使わずにテキストファイルに保存する方法もあります。(件数が少ないのならば)

投稿日時 - 2010-09-07 09:09:07

お礼

早速に回答頂きまして有り難う御座います。

なるほどです。やはりDBの事はDBに仕事させた方が、効率的ってことですよね。
PHPで処理するというのは、最初、「お気に入りに登録する」というボタンを押下した時点で、
MySQLにstart_dateとend_date等と言ったカラムに日付を強制的に入れて、PHPで毎回、日付を
チェックして、そのレコードを削除なんて考えておりました。

やっぱりPHPでの処理は、ややっこしいですよね。済みません。

でもSQLで5ヶ月の判定ってどうやるんだろう?.....ちょっと自分で勉強してみます(^^;)

大変有り難う御座いました。少しスッキリ致しましたm(_ _)m

投稿日時 - 2010-09-07 11:37:07