0

基本的には、自分の考えが正しいのか、それともより良い考えがあるのか​​を知りたいだけです。

Web サイトで現在行われている (または行われる予定の) オークションを格納するデータベースがあります。明らかに、オークションが終了する時点が来ます。私は Web 開発にかなり慣れていないので、データベース内のオークションのステータスを「期限切れ」に変更する最善の方法を考えていました。

私は phpmyadmin と mysql を使用しており、mysql イベント スケジューラについて少し読んだことがあります。私が集めることができるものから、彼らはこれを行う良い方法のようです. これに基づいて、たとえば、毎分繰り返しイベントを実行するだけで、現在の時間をオークションの事前に定められた終了時間と照合し、必要に応じて変更を加えますか? これは正しいです?また、期限切れのオークションを古いアーカイブに移動することもできます - データベースのパフォーマンスを最適化するための最良のアイデアはありますか?

そうでなければ、同じことを行うためのより良い(またはより簡単な方法)があるかどうか疑問に思いました。たとえば、ebay のようなサイトはどのように行っているのでしょうか。お忙しい中、ありがとうございました。

PSこれは、具体的な質問というよりも概念的な質問であることに気づきました。それにもかかわらず、私は尋ねても大丈夫だと思います!

4

2 に答える 2

1

あなたはこれを複雑にしすぎています。オークションの有効期限が切れた瞬間に、実際にオークションのステータスを変更する必要はありません。ステータスは、有効期限からすでに一目瞭然です。データベースに列がある場合expiry_time、オークションがアクティブになる前、または期限切れになった後はいつでも。それと同じくらい簡単です。次のような適切なクエリを使用して、すべてのアクティブなオークションを検索します。

SELECT * FROM `auctions` WHERE `expiry_time` > NOW()
于 2012-12-11T14:52:07.907 に答える
0

この方法でも可能ですが、別の方法をお勧めします。これは私が自分で実装したもので (ゲームで、しかし同じメカニズムで)、魅力的に機能しました。

あなたがしなければならない唯一のことは、すべてのページロードで(他の何よりも前に)関数を実行し、何かをアーカイブに移動する必要があるかどうかを確認することです. 世話をする必要がある場合は、それを行います。

このようにすると、訪問者が見ているページが常に更新されていることがわかります。あなたが話したようなある種の cron_job またはイベントを使用する場合、それらのオークションの一部は、ジョブが実行されてから数秒後に「期限切れ」になる可能性があるため、ほぼ別の分の間、誤ってアクティブとして表示されます。

于 2012-12-11T14:54:03.807 に答える