2

私は現在、クライアント向けのギャンブルシステムをコーディングしています。システムの仕組みは次のとおりです。

  • チケットは私たちが作成するものです
  • 各チケットには、チケットごとに一定量の番号が割り当てられます
  • 000,000 から 999,999 までランダムに並べられた合計 1,000,000 があります。
  • これらの 100 万の数字はチケットに分割され、チケットごとの数字の量は管理者によって定義されます。

問題は、現時点でランダムにソートされた 100 万個の数値の配列があることです。これは問題ありませんが、これをデータベースに挿入する最良の方法は何でしょうか?

2つのテーブルがあります

切符売場

  • ID
  • チケットUID
  • 賞品ID
  • 追加日

チケット番号

  • ID
  • チケットID
  • 番号

ユーザーが賞品にチケットを追加することを決定した時点で、ループして、チケットごとの合計数によって決定される合計チケットを作成します。たとえば、チケットごとに 1 番号 = 100 万チケットなど...

ここで、チケットごとの合計数をチェックして、番号配列から何回追加したかをループしてから、元の配列から削除して、重複する番号がないようにします。

問題の原因は、この方法で大量のメモリが必要になり、ページがタイムアウトすることです....

この問題を克服するために誰かが提案できる別の方法はありますか?

PS ソースコードを提供することはできませんが、これは基本的に私たちが行っていることであり、本当に必要なのは、このすべてのデータの挿入を処理する方法の他の方法の理論です。

前もって感謝します

4

2 に答える 2

1

私はギャンブルにはあま​​り興味がないので、これらのチケットがどのようにギャンブルと関係があるのか​​よくわかりません.

とはいえ、本当に大量のデータを作成する必要がある場合は、いくつかのオプションがあります。たとえば、チケット作成をユーザーから遠ざけることができます。つまり、ユーザーが「チケットを賞品に追加する」ことを決定したときはいつでも、このタスクを別のプロセス/スレッドに委任し、ユーザーを先に進めます。次に、チケットの作成が完了すると、プロセスは何らかの方法でユーザーに通知します。

于 2012-07-28T16:56:09.200 に答える
1

現時点では、試してみることなしに最善の解決策を思いつくことはできません.そもそも数値をデータベースに保存する必要がありますか? 000000 から 999999 までの単純な数値の場合は、その場で生成するだけで、より効率的になります。

通常、タイムアウトの問題を解決するには、デフォルトの php タイムアウトを増やすか、この特定のタスクを完全に無効にすることができます。

//set php script timeout, 0 to disable 
set_time_limit(0); 

// your time consuming code 

//don't forget to reset to 30 seconds. 
set_time_limit(30); 
于 2012-07-28T16:57:16.890 に答える