カウントダウンの質問

WBOY
WBOYオリジナル
2016-06-23 13:34:25955ブラウズ

私たちのウェブサイトには、未回答のミッションを表示するミッションホールがあります。タスクが受け入れられなかった場合、ステータスは 0 になります。ユーザーがタスクを受け入れた後は、20 分以内に支払いが行われない場合、ステータスは 1 になります。タイムアウトの場合、タスクのステータスは 0 に設定され、ユーザーはタスク ホールに戻ります。データベースにはタイムアウトを記録するフィールドがあります。
専門家の皆様にお聞きしたいのですが、支払いタイムアウトがより合理的かどうかはどこで判断すればよいのでしょうか?


ディスカッションに返信 (解決策)

検出スクリプトを作成し、それがタイムアウトになった場合は、データベースを更新します

ユーザーがタスクを表示したとき (またはタスクが表示される場所) ) 、データベースに移動して、タイムアウト期間を指定して Xiaoyu の現在のタスクをクエリし、それらのタスクのステータスを 0 に設定します

検出スクリプトを作成し、タイムアウトになった場合はデータベースを更新します

この方法。時間内に更新できません

$ sql = "select *,if(state=0,0,if(jtime<".(time()-20*60).",0,1)) as state2 from table ";
state2 の値を渡すことができます: 0|1 はタスクの受付ステータス

とみなされ、自動実行されるスクリプトで更新されます。
スクリプトのみが更新される場合、特に大量のデータがある場合、主に実行時間の違いにより、データ遅延の問題が発生します。

ユーザーが自分のタスク (またはタスクが表示される任意の場所) を表示するとき、データベースに移動して、10 秒未満のタイムアウト期間で現在のタスクをクエリし、それらのタスクのステータスを 0 に設定します

これが今私がやっていることですが、これはデータベースに過度の負荷をかけますか?このため、誰かがミッション ロビーを閲覧するたびに、データベースを更新する必要があります。

いいえ、心配な場合は、この変数がデータベースに保存されており、前回の実行時間が現在と 60 秒 (または 10 秒) 異なっているかどうかを判断します。 60秒以上、更新を実行して最終実行時刻を変更するだけです

スクリプトを書くことしかできないようです

crontabを使用して1分ごとに確認して更新します。

いいえ、心配であれば、この変数はデータベースに保存されており、前回の実行時間が現在と 60 秒 (または 10 秒) 異なっているかどうかを判断します。 60 秒を超えている場合は、更新を実行して最後の実行時間を変更するだけです

はい、ありがとうございます

検出スクリプトを作成して、1 分ごとに実行します。タイムアウトになった場合は、データベースを更新します
この方法で行うことができます。時間通りに更新してください

これには、多少の遅れが生じますが、スクリプトに必ずしも 20 分を費やす必要はありません。これにより、誤差をある程度減らすことができます。できるだけ
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。