ホームページ >バックエンド開発 >PHPチュートリアル >csdn ダウンロードと同様のパフォーマンスの問題への対処 [ディスカッション歓迎]

csdn ダウンロードと同様のパフォーマンスの問題への対処 [ディスカッション歓迎]

WBOY
WBOYオリジナル
2016-06-23 14:23:571135ブラウズ

csdn のダウンロード チャネルでは、ユーザーが添付ファイルをダウンロードした場合、次回ダウンロードするときにポイントを差し引く必要はありません。
現在、同様の関数を実装計画として、添付ファイル テーブルにフィールドを追加することです。download_uids は、添付ファイルをダウンロードしたすべてのユーザーの ID を保存するために使用されます。次に、ユーザーがダウンロードするときに、まず in_array() 関数を使用して、添付ファイルに記録されている download_uid にユーザー uid が存在するかどうかを確認します。存在する場合、ゴールド コインの控除操作は実行されません。が実行され、array_push が実行されます。

重要なポイント: 大規模な配列 (最大 30,000 ユーザー) に対する in_array() の操作にパフォーマンスの問題はありますか。
array_push() は大規模な配列 (最大 30,000 ユーザー) に対してパフォーマンス上の問題を抱えていますか?


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

2 つのフィールドを持つ新しいテーブルを作成します
uid ユーザー ID を保存します
リソース ID を保存します

クエリユーザーが特定のリソースをダウンロードしたかどうか
select * from tbl_name where uid=$uid and Did=$did

ユーザーがダウンロードしたリソースをクエリする
select * from tbl_name where uid=$uid

どのユーザーが特定のリソースをダウンロードしたかをクエリするresource
select * from tbl_name where Did=$did

2 つのフィールドを持つ新しいテーブルを作成する
uid ユーザー ID を保存する
Did リソース ID を保存する

ユーザーがリソースをダウンロードしたかどうかをクエリする
select * from tbl_name where uid= $uid と Did= $did

ユーザーがダウンロードしたリソースをクエリします
select * from tbl_name where uid=$uid

どのユーザーが特定のリソースをダウンロードしたかをクエリします
select * from tbl_name where Did=$did
ありがとう、Buzhu 、勉強になりました。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。