ホームページ >バックエンド開発 >PHPチュートリアル >PHP で同時実行性の高い宝くじプログラムをお探しですか?
同時PHP抽選
私の考え方は以下の通りです: 1等: 1、2等: 2、3級: 3。 このように、賞品の数は6です。 100人が同時に抽選に参加した場合、この場合、空の賞品は 100 -6 = 94 個のアイテムになります。
デザインしながら抽選に参加する方法を想像するのは難しい...
期限があります。たとえば、抽選の時間は今日 2013 年 9 月 15 日で、2013 年 10 月 15 日に終了します
あなたの計画を詳しく紹介していただけますか。
期限があるということは、高い同時実行性とどのような関係があるのでしょうか?
期限があるので、高い同時実行性と何の関係があるのでしょうか?
SQL1 の未獲得の番号は 001 002 003 004 005 006 です。
SQL2 のユーザー 1 は 001 を獲得しました。通常の状況では、当選していない残りの番号は 002 003 004 005 006 です
特殊な状況下で、sql2 が 001 の当選ステータスを当選に緊急に変更すると、ユーザー 2 が SQL1 にクエリして取得した未当選の番号は 001 002 003 のままになります。 004 005 006. ユーザー 2 もまた 001 を獲得する可能性があります
これはオンライン ゲームですか?クライアントの参加が必要ですか?
1. 賞金プールを生成します $arr = array_merge($real, $empty);
2. それをファイルまたは独立したテーブルに保存します 3. 宝くじ中のみファイルまたはテーブルを開きます (その後の抽選はキューに入れることしかできません) ) リソースのリリースを待っています)
4. 賞金プールを変更し、リソースをリリースします
即時引き換えでも、期限切れ時の 1 回限りの取引でも、同じことを行うことができます
宝くじは同時実行され、それぞれを許可しますユーザーがキュー抽選を実現します。
1. 賞金プールを生成します $arr = array_merge($real, $empty);
2. それをファイルまたは独立したテーブルに保存します 3. 宝くじ中は排他的にファイルまたはテーブルを開きます (その後の抽選はキューに入れられるだけです) ) リソースのリリースを待っています)
4. 賞金プールを変更してリソースをリリースします
即時引き換えであっても、期限切れ時の 1 回限りの取引であっても、同じことを行うことができます
キューになるはずです。
memcache に直接保存した方が良いでしょうか?
これは PHP の機能 (または欠点) です。PHP はマルチプロセスに依存せず、単独では同時同期の問題を解決できないため、PHP のシングルスレッド機能など、他のプログラムの助けを借りて実現できます。メムキャッシュ。